主要思想:
- 定義一個對象保存節點內容,包含三部分內容:當前節點的value值,左孩子,右孩子
- 運用左孩子的下標值是父節點的二倍加一,右孩子的節點值是父節點的二倍加二的數量關係,遞歸的調用addNode函數,函數返回一個節點,當節點爲空時返回null。
- 最終返回根節點
靈魂畫手畫了一個二叉樹示意圖
var arr1=[1,2,3,4,5,null,6,null,null,7,null];
//定義每個節點爲一個對象
function node(val){
this.val= val;
this.left = null;
this.right = null;
}
//參數爲數組,需要添加的節點在數組中的下標,數組長度
function addNode(arr, index, n){
let pnode = null;
if(index < n && arr[index] !== null){
//數組沒越界,並且數組元素不爲null,可以新創建一個節點
pnode = new node(arr[index]);
//遞歸調用會返回當前節點的左節點,它與當前節點的下標值關係爲2倍+1的關係
pnode.left = addNode(arr, 2*index+1, n);
pnode.right = addNode(arr, 2*index+2, n);
}
return pnode;
}
let root = addNode(arr1, 0, arr1.length);