現給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求你計算該二叉樹的高度。
輸入包含多組測試資料,每組輸入首先給出正整數n(<=50),為樹中結點總數。下面2行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母(區別大小寫)的字串。
對於每組輸入,輸出乙個整數,即該二叉樹的高度。
9abdfghiec
fdhgibeac
7abcdefg
gfedcba57
#include #include char pre[60], in[60];
typedef struct tree
;tree tree[60];
int loc = 0, n, max;
tree *creat()
tree *build(int p1, int p2, int i1, int i2)
if(i != i1)
t->lchild = build(p1+1, i - i1 + p1 , i1, i-1);
if(i != i2)
t->rchild = build(p2 + 1 + i - i2, p2, i + 1, i2);
return t;
}void preorder(tree *t, int level)
preorder(t->lchild, level + 1);
preorder(t->rchild, level + 1);
}int main()
return 0;
}
二叉樹寬度 非遞迴 天勤
這裡認為書上求max那段for迴圈對j的賦值是錯誤的。訂正一下 求二叉樹的寬度函式 typedef struct st int maxnode btnode b if q rchild null for i 1 i lno i if n max max n return max else retur...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
二叉樹問題 二叉樹層級列印
給定二叉樹的頭結點,按層級列印二叉樹節點值。從上到下按層遍歷,應該是先遍歷到的節點先輸出。因此用佇列作為輔助結構來解此題。層級遍歷中關鍵點要知道什麼時候換層。用兩個變數last 和nlast,分別指向當前層的最右邊和下一層的最右邊節點。當當前層的最右邊節點從佇列中輸出時,表示這一層遍歷完畢了,此時使...