大佬的實現
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
由前序遍歷可知道,第乙個數是root。
再由中序遍歷可以知道,root前面的為左子樹的中序遍歷,右邊為右子樹的中序遍歷。
回到前序遍歷,左子樹有多少個數(假設為n),除了第乙個是root 後面n個數就是左子樹的前序遍歷。
遞迴思想生成
為了生成新的前序遍歷和中序遍歷,不停的更新左子樹結點數 右子樹節點數和給出新陣列。太過複雜
這個方法利用了4個索引來確定子樹的遍歷陣列,減少了賦值成新陣列的步驟。
而且遍歷總是在陣列中是連續的幾個數。所以可以通過對引數調整來達到找到子樹遍歷陣列的作用。
棒!!!!
public
class
solution
private treenode reconstructbtree
(int
pre,
int startpre,
int endpre,
int[
] in,
int startin,
int endin)
return root;
}}
根據二叉樹前序 中序遍歷還原二叉樹
在學習二叉樹遍歷的時候我們學習了三種遍歷方法 前序 中序 後序 同時我們知道給定前序和中序 中序和後序我們可以還原二叉樹,記得當時只是在紙上畫了一畫。現在把當時的想法完成。給定前序和中序生成二叉樹。include 在學習二叉樹遍歷的時候我們學習了三種遍歷方法 前序 中序 後序 同時我們知道給定前序和...
根據前序 中序 後序遍歷還原二叉樹
參考 首先我們得知道概念 前序遍歷 先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍歷與此同。規律 根在前 子樹在根後且左子樹比右子樹靠前,且第乙個就是根節點 中序遍歷 先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍歷會得到資料公...
還原二叉樹(前序 中序求二叉樹)
給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n 50 為樹中結點總數。下面2行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。此題為利用先序和中序來構造整顆二叉樹,關鍵在於利用先序序列 根左...