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;
    }
  • 相关阅读:
    京东饭粒捡漏V1.15
    京东饭粒捡漏V1.14
    京东饭粒捡漏V1.13
    京东饭粒捡漏V1.1.0
    京东饭粒捡漏V1.0.8
    京东饭粒捡漏V1.0.7
    性能瓶颈分析总结
    Jmeter循环控制
    HttpClient接口测试之会话保持
    Jenkins自动部署Tomcat项目
  • 原文地址:https://www.cnblogs.com/YangqinCao/p/5898259.html
Copyright © 2011-2022 走看看