遍历树

87 阅读1分钟
function TreeCode() {
    let BiTree = function(ele){
        this.data = ele;
        this.left = null;
        this.right = null;
    }
    
    this.createTree = function(){
        let biTree = new BiTree('A');
        biTree.left = new BiTree('B');
        biTree.right = new BiTree('C');
        biTree.left.left = new BiTree('D');
        biTree.left.left.left = new BiTree('G');
        biTree.left.left.right = new BiTree('H');
        biTree.right.left = new BiTree('E');
        biTree.right.right = new BiTree('F');
        biTree.right.left.right = new BiTree('I');
        return biTree;
    }
}

深度优先遍历

function deeptSearch(biTree){
    let stack = [];
    stack.push(biTree);
    
    while(stack.length != 0){
        let node = stack.pop();
        console.log(node.data);
        if(node.right){
            stack.push(node.right);
        }
        if(node.left){
            stack.push(node.left);
        }
    }
}

广度优先遍历

function wideSearch(biTree){
    let queue = [];
    queue.push(biTree);
    
    while(queue.length != 0){
        let node = queue.shift();
        console.log(node.data);
        if(node.left){
            queue.push(node.left);
        }
        if(node.right){
            queue.push(node.right);
        }
    }
}

前序遍历

function beforeSearch(biTree){
    if(!biTree){
        return;
    }
    console.log(biTree.data);
    beforeSearch(biTree.left);
    beforeSearch(biTree.right);
}

中序遍历

function centerSearch(biTree){
    if(!biTree){
        return;
    }
    centerSearch(biTree.left);
    console.log(biTree.data);
    centerSearch(biTree.right);
}

后序遍历

function afterSearch(biTree){
    if(!biTree){
        return;
    }
    afterSearch(biTree.left);
    afterSearch(biTree.right);
    console.log(biTree.data);
}