根據先序和中序陣列構建二叉樹

2022-06-10 17:27:10 字數 1083 閱讀 4704

首先根據定義,先序的第乙個元素為根節點,由於規定元素沒有重複,所以可以根據根節點數值來將中序遍歷陣列中左右子數分開。

同時根據左右子數的個數繼續拆分對應的先序陣列,遞迴左右子樹得到結果

/**

* created by itworker365 on 5/12/2017. */

public

class

rebuildbtree ;

//左根右

int midtrace = ;

rebuildbtree rebuildbtree = new

rebuildbtree();

treenode treenode =rebuildbtree.reconstructbinarytree(pretrace, midtrace);

}public treenode reconstructbinarytree(int pre,int

in)

return reconstructbinarytree111(pre, 0, pre.length - 1, in, 0, in.length - 1);

}public treenode reconstructbinarytree111(int pre,int pstart, int pend, int in, int istart, int

iend)

treenode root=new

treenode(pre[pstart]);

//首先由先序遍歷知道第乙個元素肯定是根元素,遍歷中序找,找到根節點

//將中序結果分為兩個子子數,根據元素個數同時拆分先序陣列,分別構建左右子樹

for(int i = istart; i <= iend; i++)

if(in[i] ==pre[pstart])

return

root;

}}class

treenode

public

void

setleft(treenode left)

public

void

setright(treenode right)

}

根據中序和先序 後序 構建二叉樹

例 前序遍歷 gdafemhz 中序遍歷 adefghmz 畫樹求法 第一步,根據前序遍歷的特點,我們知道根結點為g 第二步,觀察中序遍歷adefghmz。其中root節點g左側的adef必然是root的左子樹,g右側的hmz必然是root的右子樹。第三步,觀察左子樹adef,左子樹的中的根節點必然...

先中序構建二叉樹

資料結構學到二叉樹了。覺得有點難了。大家都知道,先序 中序或者中序 後序才能確定一棵二叉樹。這次用的是先序和中序構建二叉樹,再用層序遍歷輸出。先序 7 10 4 3 1 2 8 11 中序 4 10 3 1 7 11 8 2 那麼層序就是 7 10 2 4 3 8 1 11 struct binar...

先序構建二叉樹及先序遍歷二叉樹

先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...