重建二叉樹(前序和中序)

2021-08-09 07:07:58 字數 532 閱讀 9329

根據二叉樹的前序輸出和中序輸出重建這顆二叉樹

劍指offer上的一道題,

思路:前序遇到的第乙個元素肯定是根節點,先建立乙個根節點,然後將這個值在中序序列中查詢他的位置用leftcount記錄,找到後將該值左面和右邊分別遞迴。

#include#include#include#includeusing namespace std;

typedef struct nodebtnode;

btnode * precreatebyfrontmid(int front,int mid,int low,int high)

void midprint(btnode * root)

}int main(void)

cout<<"輸入中序"<>mid[i]; }

//根據前序中序重建二叉樹

btnode * root=null;

root=precreatebyfrontmid(front,mid,0,n);

printf("\n");

cout<<"輸出中序:"<

重建二叉樹 前序遍歷和中序遍歷

主要程式設計思想 由於前序遍歷第乙個數永遠是根,中序遍歷根左邊是左子樹,右邊衛右子樹。因此,每次找到乙個根節點,前序遍歷就可以分成左子樹序列和右子樹序列,中序遍歷也可以分成左子樹序列和右子樹序列,分別建立左子樹和右子樹,所以是非常典型的遞迴問題 treenode rebuildtree vector...

重建二叉樹(前序,中序序列建樹)

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。definition for binary tree struct treenode class solution 根據根...

演算法 給定二叉樹前序和中序序列重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 前序序列第乙個肯定為root,設值為n,則在中序序列中n所在位置左邊的肯定是左子樹的元素,右邊的是右子樹的元素,因此,遞迴找r...