1. 程式人生 > >從上往下列印二叉樹 (層序遍歷)JS演算法

從上往下列印二叉樹 (層序遍歷)JS演算法

 

 從上往下打印出二叉樹的每個節點,同層節點從左至右列印

 //給定節點結構

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */

//傳入二叉樹頭結點
function PrintFromTopToBottom(root)
{
    if ( !root ) return false;//如果頭結點為空、返回假
    var result = []; //建立一個數組存放結果
    var tree = []; //建立一個數組存放二叉樹
    tree.push(root); //先傳入頭結點

   // 當tree陣列長度不為空
    while( tree.length ){
        var node = tree.shift();    // 將陣列第一個結點放到node中                                                                                                                                                                                                                                                                                                                                          
        result.push(node.val); //將node結點的值壓入result陣列中
        //如果node結點左子樹不為空
        if( node.left ){ 
            tree.push(node.left); // 將node結點的左子樹結點的值壓入tree陣列中
        }

        //如果node結點又子樹不為空
        if( node.right ) {
           tree.push(node.right); //將node結點的右子樹結點的值壓入tree陣列中
        }
    }
    return result; //返回result陣列
}

描述不恰當的地方、歡迎指正。 ^_^