題目
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。
**
/*---------------------------------------
* 日期:2015-07-20
* 題目: 8.重建二叉樹
* 結果:ac
* **:
* 部落格:
-----------------------------------------*/
#include
#include
#include
#include
using
namespace
std;
struct treenode
};class solution//if
return preinbuildtree(pre,in,0,0,size);
}private:
treenode* preinbuildtree(vector
preorder,vector
inorder,int preindex,int inindex,int size)//if
// 根節點
treenode* root = new treenode(preorder[preindex]);
// 尋找根節點在中序遍歷陣列的下標
int index = 0;
for(int i = 0;i < size;++i)//if
}//for
// 左子樹個數
int leftsize = index - inindex;
// 右子樹個數
int rightsize = size - leftsize - 1;
// 左子樹
root->left = preinbuildtree(preorder,inorder,preindex+1,inindex,leftsize);
// 右子樹
root->right = preinbuildtree(preorder,inorder,preindex+1+leftsize,index+1,rightsize);
return root;
}};void postorder(treenode* root)
int main();
vector
inorder = ;
treenode* root = s.reconstructbinarytree(preorder,inorder);
postorder(root);
return
0;}
劍指offer 8 重建二叉樹
coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution 返回構造的treenode根節點 def reconstructbinarytree self,p...
4 重建二叉樹(劍指offer)
4.重建二叉樹 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。1 思路 通常樹有如下幾種遍歷方式 前序遍歷 先訪問根結點,再訪問左子結點,最後訪問右子結點。root一般在最前 中...
劍指offer 樹 7 重建二叉樹
使用雜湊表map記錄中序遍歷每個元素的位置 利用性質 1.先序遍歷的第乙個節點是根節點 2.中序遍歷的根節點的左邊是左子樹,右邊是右子樹 假設左子樹的中序遍歷的長度是len,在前序遍歷中,根節點後面len個數,是左子樹的前序遍歷,剩下的數是右子樹的前序遍歷 根據左右子樹的前序遍歷和中序遍歷,我們先遞...