設某二叉樹
前序遍歷為:abcdefghi
中序遍歷為:bcaedghfi
求該二叉樹的後序遍歷?
因為二叉樹前序遍歷為:abcdefghi,所以這棵樹的根結點為a;
又因為中序遍歷為:bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi;
現在先看左子樹中序遍歷:bc,由前序遍歷abcdefghi,所以b為左子樹的根結點;
現看右子樹中序遍歷:edghfi,由前序遍歷defghi,得d為右子樹的根結點;
依些遞推就可以將各個子樹化出來,結果為:cbehgifda
c++**實現如下:
#include #include #include using namespace std;
struct treenode
;void binarytreefromorderings(char* inorder, char* preorder, int length)
treenode* node = new treenode;
node->elem = *preorder;
int rootindex = 0;
for(;rootindex < length; rootindex++)
//left
binarytreefromorderings(inorder, preorder +1, rootindex);
//right
binarytreefromorderings(inorder + rootindex + 1, preorder + rootindex + 1, length - (rootindex + 1));
cout
已知二叉樹前序 後序遍歷如何求中序
已知二叉樹的兩種遍歷求第三種遍歷。已知前序和中序求後序,已知後序和中序求前序,這兩種解法網上有很多,但是已知前序和後序求中序的解法我沒找到,這裡寫乙個自己的想法,有可能大家已經想到了我沒有搜尋到而已 首先,我們看看前序 中序 後序遍歷的特性 前序遍歷 1.訪問根節點 2.前序遍歷左子樹 3.前序遍歷...
二叉樹 已知前序和中序,求後序
題目描述 若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。分析 首先要明確乙個基礎的問題,前序遍歷的順序是 根 左 右 中序遍歷的順...
二叉樹 前序和中序得到後序
二叉樹前序 遍歷順序為,根節點 左子樹 右子樹 中序 遍歷順序為,左子樹 根節點 右子樹 後序 遍歷順序為,左子樹 右子樹 根節點 可以發現,二叉樹前序中的第乙個節點為樹的根節點root,然後找出root在中序裡面的位置,就可以把前序和中序分別劃分為左 右子樹兩個部分,然後遞迴呼叫即可。舉個例子,前...