jsで二叉の木の遍歴を実現します.

1433 ワード

二叉の木の常用遍歴は前の順序で、中の順序は巡回して、後の順序は巡回して、3種類のエルゴードの方法はコードの運行順序を交換しただけで、コードは以下の通りです.
function Node(data,left,right){
    this.data=data;
    this.left=left;
    this.right=right;
}

function Tree(){
    this.root=null;
}

Tree.prototype={

    //     
    create: function(){
        var b=new Node(2,new Node(4),new Node(5));
        var c=new Node(3,new Node(6),new Node(7));
        this.root=new Node(1,b,c);
    },

    //    
    preTravel: function(root){
        if(root==null){
            return;
        }

        console.log(root.data);
        this.preTravel(root.left);
        this.preTravel(root.right);
    },

    //    
    middleTravel: function(root){
        if(root==null){
            return;
        }

        this.middleTravel(root.left);
        console.log(root.data);
        this.middleTravel(root.right);
    },

    //    
    postTravel: function(root){
        if(root==null){
            return;
        }

        this.middleTravel(root.left);
        this.middleTravel(root.right);
        console.log(root.data);
    }    
}
最初に、これらのエルゴード方法のためにデフォルトのパラメータthis.rootに導入した結果、死のサイクルにつながることがわかった.最後に発見されたのは、後にundefinedをパラメータとして導入し、この時に自動的にデフォルトのパラメータを使用して死のサイクルに入るからだ.また、プロトタイプ方法を定義する場合、他のプロトタイプ方法を呼び出す場合は、thisスコープで検索します.テストコードは以下の通りです.
var tree=new Tree();
tree.create();
tree.preTravel(tree.root);
tree.middleTravel(tree.root);
tree.postTravel(tree.root);