劍指offer 8 重建二叉樹

2021-09-23 23:09:00 字數 1433 閱讀 2729

題目

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。

**

/*---------------------------------------

* 日期: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個數,是左子樹的前序遍歷,剩下的數是右子樹的前序遍歷 根據左右子樹的前序遍歷和中序遍歷,我們先遞...