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

2021-06-18 23:32:10 字數 1015 閱讀 1380

設某二叉樹

前序遍歷為: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在中序裡面的位置,就可以把前序和中序分別劃分為左 右子樹兩個部分,然後遞迴呼叫即可。舉個例子,前...