JS中由先序遍歷和中須遍歷構造二叉樹

2021-07-28 22:08:54 字數 1112 閱讀 9884

1、首先是利用建構函式建立乙個二叉樹的的資料結構

(注意:在js中沒有這樣的變數,故使用陣列)

function

treenode

(x)

2、先分析,二叉樹先序遍歷,即第乙個元素為根節點,在中序遍歷中,根節點之前的所有元素為左子樹(長度為llen),之後的所有元素為右子樹(r長度為len),現在,再回到先序遍歷,根節點之後llen長度的元素順序為左子樹的先序遍歷順序,右子樹同理,故而可使用遞迴來構建。

3、注意:陣列的slice方法「取前不取後」

完整**如下:

//由先序遍歷和中序遍歷構造二叉樹

function

treenode

(x)

var pre = [1, 2, 4, 7, 3, 5, 6, 8],

vin = [4, 7, 2, 1, 5, 3, 8, 6];

function

reconstructbinarytree

(pre, vin)

var rootnode = pre[0];

var index = vin.indexof(rootnode);

var lchildvinarr = vin.slice(0, index),

rchildvinarr = vin.slice(index + 1),

lchildvinlen = lchildvinarr.length,

rchildvinlen = rchildvinarr.length;

var lchildprearr = pre.slice(1, lchildvinlen + 1),

rchildprearr = pre.slice(lchildvinlen + 1);

t.val = rootnode;

t.left = new treenode();

t.right = new treenode();

if (t.val)

}createtree(t, pre, vin);

return t;

}var t = reconstructbinarytree(pre,vin);

部落格295 由先序遍歷結果和中序遍歷結果建立樹

內容 根據先序遍歷和中序遍歷結果來建立一棵樹 思路 1 每次遞迴建立樹的左右子樹 2 由先序遍歷的第乙個資料就是根節點,然後這個節點在中序遍歷的位置的左邊為樹的左子樹成員,右邊為右子樹成員 由此可以劃分樹的左右子樹部分,進行遞迴處理 先序中序建樹 include include include in...

由先序遍歷和中序遍歷生成二叉樹

生成演算法是遞迴的,對於先序序列來講,第乙個元素就是當前子樹的根節點,對於中序序列來講,每乙個中序序列都會被分割為兩個部分,這兩個部分就是下一次的要構造的子樹,所以說生成子樹的過程是自頂向下的 public class gentree string rootdata pre 0 string lef...

樹的遍歷 先序遍歷 中序遍歷 後序遍歷

名詞解釋 1 每個元素稱為節點 2 有乙個特定的節點被稱為根節點或樹根 3 除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.tm 1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹 節點的度 乙個節點含有子樹的個數稱為該節點的度 葉節點或終端節點 度為0的節點稱為葉節點 非終端...