js刷题

树的基础知识

  • 树结构
function TreeNode(val) {
        this.val = val;
        this.left = this.right = null;
    }
  • 前序遍历、中序遍历、后序遍历
    var num=[3,9,20,null,null,15,7]
    function preorder(node) {
        if(node!=null){
            console.log(node.val)
            preorder(node.left)
            preorder(node.right)
        }
    }
    function inorder(node) {
        if(node!=null){
            inorder(node.left)
            console.log(node.val)
            inorder(node.left)
        }
    }
    function postorder(node) {
        if(node!=null){
            postorder(node.left)
            postorder(node.right)
            console.log(node.val)
        }
    }
  • 层次遍历
    function levelorder(root) {//层次遍历
        /***
         * 思路:利用一个队列,首先将根入队列,以后若队列不空则取对头元素p,
         * 如果p不空,则访问之,然后将其左右子树入队列,如此循环,知道队列为空
         *
         * 队列:先进先出
         * 尾进:push(),头出shift()
         */
                // 初始化队列
        var queue=[]
        var level=[0]

        queue.push(root)
        level.push(1)
        while(queue.length>0){
            var nodep=queue.shift()// 取队列头元素p
            if(nodep!=null) {//若节点不为空则左右孩子入队列
                // console.log(nodep.val)// 访问该节点
                queue.push(nodep.left)
                queue.push(nodep.right)
                level.push(level[parseInt(level.length / 2)] + 1)
                level.push(level[parseInt(level.length / 2)] + 1)
            }
        }
        level.sort(function (a,b) {
            return a-b
        })
        return level.pop()-1
    }
  • 深度邮箱遍历、广度优先遍历
function dfsorder(root) { //DFS深度优先遍历
        if(root==null){
            return 0
        }else{
            var leftheight=arguments.callee(root.left)
            var rightheight=arguments.callee(root.right)
            return Math.max(leftheight,rightheight)+1
        }

    }
    function BSTorder(root){
        /***
         * 搜索树的特点:
         * 1. 采用中序遍历则是从大到小排列
         */
        if(root!=null){
            BSTorder(root.left)
            console.log(root.val)
            BSTorder(root.right)
        }
    }

猜你喜欢

转载自www.cnblogs.com/ailingstar/p/12158366.html