(LeetCode一刷)層次遍歷構造二叉樹


注:個人算法比較菜,由於是第一遍刷題,代碼質量可能都不好,這里暫時做個刷題記錄:)。

二叉樹節點函數定義:

/**
 * Definition for a binary tree node.
 */
function TreeNode(val){
     this.val = val;
     this.left = this.right = null;
}

層次遍歷構建二叉樹(廣度優先)

function createBinaryTree(arr){
    var p = new TreeNode(arr[0]);
    var k = 0;
    var len = arr.length;
    var buildTree = function(node, i){
       if(2*i+1<len && arr[2*i+1]!==null){
            node.left = new TreeNode(arr[2*i+1]);
            node.left && buildTree(node.left, 2*i+1)
        }
        if(2*i+2<len && arr[2*i+2]!==null){
            node.right = new TreeNode(arr[2*i+2]);
            node.right && buildTree(node.right, 2*i+2);
        }
    };
    buildTree(p, 0);
    return p;
}

 

給定一個數組(按層次遍歷的規律排序)測試:

var arr = [3,9,20,null,null,15,7];
var tree = createBinaryTree(arr);
console.log(tree);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM