二叉树的统一迭代法

中序遍历:

var inorderTraversal = function(root) {
    const res = [];
    const stack = [];
    let node ;
    if(root!==null) stack.push(root);
    while(stack.length>0) {
        node = stack.pop();
        if(node != null) {
            if(node.right) stack.push(node.right);
            stack.push(node);
            stack.push(null);
            if(node.left) stack.push(node.left);
        } else {
            node = stack.pop();
            res.push(node.val);
        }
        
    }
    return res;
};

前序遍历:

var inorderTraversal = function(root) {
    const res = [];
    const stack = [];
    let node ;
    if(root!==null) stack.push(root);
    while(stack.length>0) {
        node = stack.pop();
        if(node != null) {
            if(node.right) stack.push(node.right);
            if(node.left) stack.push(node.left);    // 改变两行代码的位置
            stack.push(node);
            stack.push(null);
        } else {
            node = stack.pop();
            res.push(node.val);
        }
        
    }
    return res;
};

后序遍历:

var inorderTraversal = function(root) {
    const res = [];
    const stack = [];
    let node ;
    if(root!==null) stack.push(root);
    while(stack.length>0) {
        node = stack.pop();
        if(node != null) {
            stack.push(node);
            stack.push(null);       // 与之前比也是改变顺序
            if(node.right) stack.push(node.right);
            if(node.left) stack.push(node.left);
        } else {
            node = stack.pop();
            res.push(node.val);
        }
        
    }
    return res;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容