根據先序和中序求出二叉樹的高度

2021-09-08 06:30:41 字數 573 閱讀 3897

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。

輸入首先給出正整數n(≤50),為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母(區別大小寫)的字串。

輸出為乙個整數,即該二叉樹的高度。

9

abdfghiec

fdhgibeac

5
#includeusing namespace std;

int dfs(char* pre,char* in,int n) //求二叉樹的高度

int i;

for(i = 0; i < n; i++)

}int left = dfs(pre+1,in,i); //左子樹的深度

int right = dfs(pre+i+1,in+i+1,n-i-1); //右子樹的深度

return max(left,right)+1; //返回左右子樹深度的較大值中的較大值+根結點

}int main()

根據中序和先序 後序 構建二叉樹

例 前序遍歷 gdafemhz 中序遍歷 adefghmz 畫樹求法 第一步,根據前序遍歷的特點,我們知道根結點為g 第二步,觀察中序遍歷adefghmz。其中root節點g左側的adef必然是root的左子樹,g右側的hmz必然是root的右子樹。第三步,觀察左子樹adef,左子樹的中的根節點必然...

根據二叉樹的先序和中序序列畫出二叉樹

已知二叉樹的先序和中序序列如下 先序序列 1 2 4 6 3 5 7 8 中序序列 2 6 4 1 7 5 8 3 請畫出該二叉樹。答 先序序列的遍歷順序是先根節點,後左孩子,最後右孩子 中序序列的遍歷順序是先左孩子,後根節點,最後右孩子 根據先序序列知道,1肯定是根節點,然後看中序序列裡1的位置,...

根據二叉樹的先序遍歷和中序遍歷建立二叉樹

根據二叉樹的先序遍歷和中序遍歷建立二叉樹 rebacktree 根據二叉樹的先序遍歷和中序遍歷建立二叉樹。rebacktree1 根據二叉樹的後序序遍歷和中序遍歷建立二叉樹。include stdio.h include stdlib.h typedef struct node node,nodep...