一:已知二叉樹的中序和後序序列,求二叉樹的前序序列。 如:中序 dbgeafc 後序 dgebfca
後序的最後一位就是二叉樹的根節點,再根據根節點在中序序列裡的位置,可知道左右子樹,遞迴求解。
#include #include #include char pre[1500]; //用字串儲存前序序列int k;
void getpre(int n, char mid, char post)
int t = p - mid; //t可看成左子樹的元素個數。右子樹元素則有n-1-t個
getpre(t, mid, post); //左子樹
getpre(n-1-t, p+1, post+t); //右子樹
}int main()
return 0;
}
二:已知中序序列和後序序列構造樹,並輸出後序序列。如:前序 abdcef 中序 bdaecf
#include #include #include typedef struct treebitree;
bitree *creat(int n, char pre, char mid)
int t = k - mid;
p->lc = creat(t, pre+1, mid); //這裡的過程和上面差不多。
p->rc = creat(n-1-t, pre+t+1, k+1);
return p;
}void show(bitree *t)
}int main()
二叉樹 已知前序和中序,求後序
題目描述 若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。分析 首先要明確乙個基礎的問題,前序遍歷的順序是 根 左 右 中序遍歷的順...
二叉樹已知前序 中序轉後序輸出
後序 左 右 根 中序 左 根 右 前序 根 左 右 前序序列 1,2,3,4,5,6 中序序列 3,2,4,1,6,5 前序序列中的第乙個結點必定是樹的根結點,令這個結點為root,root把這棵樹分為了左右兩棵子樹。i為root所表示的值在中序中的下標,所以i即是分隔中序中對應root結點的左子...
二叉樹已知先序中序求後序 已知中序後序求先序
在做資料結構面試題的時候我們會經常發現有關二叉樹的題目總是這樣的 栗子 已知某二叉樹先序為 中序為 求後序 已知某二叉樹中序為 後序為 求先序 需要注意的是 我們只能夠通過已知先序中序求後序或已知中序後序求先序,而不能夠已知先序和後序求中序 下面總結一下兩種題的做法 首先回顧知識點 第一種 已知乙個...