根據數組創建二叉樹(JavaScript)

主要思想:

  1. 定義一個對象保存節點內容,包含三部分內容:當前節點的value值,左孩子,右孩子
  2. 運用左孩子的下標值是父節點的二倍加一,右孩子的節點值是父節點的二倍加二的數量關係,遞歸的調用addNode函數,函數返回一個節點,當節點爲空時返回null。
  3. 最終返回根節點

靈魂畫手畫了一個二叉樹示意圖
二叉樹

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章