JZOF 已知前序遍歷和中序遍歷,求出其後序遍歷

2021-09-11 21:09:28 字數 1002 閱讀 6387

題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如:前序遍歷序列{ 1, 2, 4, 7, 3, 5, 6, 8}和中序遍歷序列{4, 7, 2, 1, 5, 3, 8,6},列印出它的後序遍歷

public

class

binarytree

public

static binarytreenode construct

(int priortree,int innertree)

return construct(priortree,0,priortree.length-1,innertree,0,innertree.length-1);

}private

static binarytreenode construct

(int priortree, int ps, int pe, int innertree, int is, int ie)

int value=priortree[ps];

int index=is;

//找出中序遍歷的根節點的位置,其左邊的排列都是其左子樹,右邊是root的右子樹

while(index<=ie)else

}binarytreenode root=new binarytreenode();

root.value=value;

root.left=construct(priortree,ps,ps+index-is,innertree,0,index-1);

root.right=construct(priortree,ps+index-is+1,pe,innertree,index+1,ie);

return root;

}//列印後序遍歷

public

static

void

paint

(binarytreenode root)

}}複製**

已知中序遍歷和後序遍歷,求前序遍歷

已知中序遍歷和後序遍歷,求前序遍歷 演算法的主要部分是將中序遍歷分成左中右三部分 將後序遍歷分成左右中三部分 最後後序建樹的時候節點就等於中間的部分 左子樹由中序遍歷的左部分和後序遍歷的左部分構建 右子樹由中序遍歷的右部分和後序遍歷的右部分構建 include include include inc...

已知後序遍歷和中序遍歷求前序遍歷

而已知後序遍歷和中序遍歷求前序遍歷的過程差不多,但由於後序遍歷是最後才訪問根節點的 所以要從後開始搜尋,例如上面的例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgb a echf,而因為節點個數要對應...

前序遍歷 中序遍歷 後序遍歷

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...