二叉树算法

145 阅读1分钟

1广度优先遍历

   var levelOrder = function (root) {
        if (!root) {
            return []
        }
        let queue = [root];
        let res = []
        while (queue.length > 0) {
            let subArr = []
            let length = queue.length
            for (let i = 0; i < length; i++) {
                let pop = queue.shift();
                subArr.push(pop.val)
                if (pop.left) queue.push(pop.left)
                if (pop.right) queue.push(pop.right)
            }
            res.push(subArr)
        }
        return res;
    };
   

2中序遍历

	/**
     * @param {TreeNode} root
     * @return {number[]}
     */
    var inorderTraversal = function(root) {
        let result=[]
        const rescruion=function(root){
            if(root==null){
                return null
            }
            rescruion(root.left)
            result.push(root.val)
            rescruion(root.right)
        }
        rescruion(root)
        return result
    };

3深度优先遍历

	/**
     * @param {TreeNode} root
     * @return {number[]}
     */
    var inorderTraversal = function(root) {
        let result=[]
        let stack=[root]
        while(stack.length!=0){
           let pop=stack.pop()
           result.push(pop.val)
           if(pop.right){
           		stack.push(pop.right)
           }
           if(pop.left){
           		stack.push(pop.left)
           }
        }
        
        return result
    };