已知後序遍歷和中序遍歷求二叉樹

2021-08-28 05:00:47 字數 805 閱讀 9785

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

輸入某二叉樹的後序遍歷和中序遍歷的結果

輸出前序遍歷序列

7 4 2 5 8 6 3 1

4 7 2 1 5 3 8 6

1 2 4 7 3 5 6 8

#include#include#includetypedef struct node* bintree; 

struct node;

bintree build(int post ,int in,int size)

void preorder(bintree t) //前序遍歷 }

int main()

else //如果前乙個元素不是空格,那麼說明與前乙個元素一同構成的數 例如:10 }}

}int incount=0;

for(i=0;i='0'&&inn[i]<='9')

else}}

} //如果後序遍歷的結點數與中序遍歷的結點數相同且不為0,那麼可以找到對應二叉樹

if(postcount==incount&&postcount!=0)

return 0;

}

已知二叉樹先序遍歷中序遍歷求後序遍歷

思路簡介 先序遍歷中第乙個字母即為根節點,在中序遍歷中找到根節點的位置 把中序遍歷的字串序列從根節點分成兩部分,左側一部分構建左子樹,右側一部分構建右子樹 在 的基礎上在先序遍歷中也找到構建左右子樹的部分 遞迴還原二叉樹 後序遍歷輸出即可 include include using namespac...

二叉樹 已知先序遍歷 中序遍歷,求後序遍歷

步驟 1.確定樹的根結點 樹根是在先序遍歷中最先出現的元素,即先序遍歷的第乙個結點是二叉樹的根。2.求解樹的子樹 找到根在中序遍歷的位置,位置左邊是二叉樹的左孩子,右邊是右孩子,若根結點的左邊或右邊為空,則該方向子樹為空 若左右子樹都為空,則該結點是葉子節點。3.對二叉樹的左右孩子分別進行步驟1,2...

二叉樹遍歷 已知先序和中序,求後序遍歷

如下 include include include include using namespace std 先定義樹的結構體 struct treenode 建樹 treenode build string preorder,string inorder 先序的第乙個結點為樹的根節點 char c...