zoukankan      html  css  js  c++  java
  • 二叉树的前序、中序、后序遍历

    一、先序遍历:

    1) 递归实现

    function preOrder(root){if(root!=null){
            console.log(root);
            preOrder(root.leftChild);
            preOrder(root.rightChild);
        }
    }

     2) 非递归实现

    function preOrder(root){
        var arr=[];
        var temp=[];
        temp.push(root);
        while(temp!=null){
            var a=temp.pop();
            arr.push(a);
            temp.push(a.rightChild);
            temp.push(a.leftChild);
        }
        return arr;
    }
    function preOrder(root){
        var temp=[];
        var result=[];
        var node=root;
        while(node!=null||temp.length>0){
            if(node!=null){
                result.push(node);
                temp.push(node);
                node=node.leftChild;
            }else{
                node=temp.pop();
                node=node.rightChild();
            }
        }
        return result;
    }

    二、中序遍历

    1) 递归

    function inOrder(root){
        if(root!=null){
            inOrder(root.leftChild);
            console.log(root);
            inOrder(root.rightChild);
        }
    }

    2) 非递归

    function inOrder(root){
        var arr=[];
        var result=[];
        var node=root;
        while(node!=null||arr.length>0){
             if(node!=null){
               arr.push(node);
               node=node.leftChild;
             }else{
               node=arr.pop();
               result.push(node);
               node=node.rightChild;
            }
        }
       return result;
    }

    三、后序遍历

    1) 递归

    function postOrder(root){
        if(root!=null){
            postOrder(root.leftChild);
            postOrder(root.rightChild);
            console.log(root);
        }
    }

    2) 非递归

    function postOrder(root){
        var temp1=[];
        var temp2=[];
        var result=[];
        var node=root;
        while(node!=null||temp1.length>0){
            if(node!=null){
                temp1.push(node);
                temp2.push(node);
                node=node.rightChild;
            }else{
                node=temp1.pop();
                node=node.leftChild;
            }
        }
        while(temp2.length>0){
           result.push(temp2.pop());
        }
        return result;
    }
  • 相关阅读:
    git 错误 fatal: Not a valid object name: 'master'.
    SQL: select一组数据,concat同表同列的数据
    Linux curl usage
    Regular Expression
    浅谈Linux Process status,环境锁
    浅谈Manpage
    Java文件读写详解。 附txt乱码问题, html乱码问题
    在ubuntu 18.04下装有线守护wg
    centOS 7 换ssh端口
    如何把DEBIAN变成UBUNTU-DESKTOP最少化安装
  • 原文地址:https://www.cnblogs.com/YangqinCao/p/5898259.html
Copyright © 2011-2022 走看看