已知二叉樹的前序和中序,求後序

2021-06-05 12:53:21 字數 734 閱讀 5981

以前在學習資料結構的時候,經常會有一道選擇題,已知二叉樹的前序和中序遍歷,求二叉樹的後序遍歷。後來想到用程式設計的方法來實現它,限於水平有限,一直無從下手。後來,受另乙個問題啟發,才想出其解法:

#include #include #include typedef struct btree

btree;

enum;

int getlr(char *s,char *t,int i,char ch);

void postorder(btree *bt);

btree *addnode(btree *bt,char *s,char *t,int i);

void postfree(btree *bt);

int main()

return 0;

}int getlr(char *s,char *t,int i,char ch)

else

return bt;

}void postorder(btree *bt)

}void postfree(btree *bt)

}

關於二叉樹的問題,其關鍵是二叉樹的建立。以我的觀點看來,二叉樹的建立有兩種方法:其一是一種增量是的建立,即以某種順序不斷向二叉樹中增加節點,上述程式就是採用這種方法建立的。採用這種方法的關鍵是對於每個節點,遍歷已建立的二叉樹,查詢插入點。其二是屬於遞迴建立,即節點的建立是基於前一次遞迴的結果,不斷遞迴直至結束。

二叉樹 已知前序和中序,求後序

題目描述 若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。分析 首先要明確乙個基礎的問題,前序遍歷的順序是 根 左 右 中序遍歷的順...

已知二叉樹的中序和後序求前序

例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgba echf,而因為節點個數要對應 後序遍歷分為 gbd ehfc a,gbd為左子樹,ehfc為右子樹,這樣又可以遞迴計算了 最後形成的二叉樹如下所...

已知二叉樹前序和中序求後序

設某二叉樹 前序遍歷為 abcdefghi 中序遍歷為 bcaedghfi 求該二叉樹的後序遍歷?因為二叉樹前序遍歷為 abcdefghi,所以這棵樹的根結點為 又因為中序遍歷為 bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi 現在先看左子樹中序遍歷 bc,由前序遍歷abcdef...