0
点赞
收藏
分享

微信扫一扫

二叉树深度遍历和广度遍历

深度遍历:

前序遍历:(根左右)

var preorderTraversal = function(root) {
    let res=[]
    function preorder(root){
        if(root==null){
            return
        }
        res.push(root.val)
        preorder(root.left)
        preorder(root.right)
    }
    preorder(root)
    return res
};

中序遍历:(左根右)

var inorderTraversal = function(root) {
    let res=[]
    var inorder =function (root){
        if(root==null){
            return ;
        }
        inorder(root.left)
        res.push(root.val)
        inorder(root.right)
    }
    inorder(root)
    return res
};

后序遍历:(左右根)

var postorderTraversal = function(root) {
    let res=[]
    function postorder(root){
        if(root==null){
            return
        }       
        postorder(root.left)
        postorder(root.right)
        res.push(root.val)
    }
    postorder(root)
    return res
};

广度遍历

层序遍历:

var levelOrder = function(root) {
    let res=[],queue=[]
    queue.push(root)
    if(!root){
        return res
    }
    while(queue.length){
        let curleve=[]
        let length=queue.length
        for(let i=0;i<length;i++){
            let node = queue.shift()
            curleve[i]=node.val
            if(node.left){queue.push(node.left)}
            if(node.right){queue.push(node.right)}
        }
        res.push(curleve)
    }
    return res
};
举报

相关推荐

0 条评论