演算法題day3 二叉樹

2021-09-28 14:41:46 字數 1534 閱讀 5969

1. 統計二叉樹中度為1的結點個數

int

singlenodes

(bitree bt)

else

return0;

}

2. 統計二叉樹中度為2的結點個數

int

doublenodes

(bitree bt)

3. 統計二叉樹中度為0的結點個數

int

zeronodes

(bitree bt)

else

return0;

}

4. 統計二叉樹的高度(遞迴&非遞迴)

int

getdepth

(bitnode* bt)

if(p-

>rchild !=

null)if

(front == last)

//處理改層的最右結點

}return depth;

}int

getdepth

(bitnode* bt)

5. 統計二叉樹的寬度(非遞迴)

typedef

struct

st;int

maxnode

(bitnode *bt)

if(q-

>rchild !=

null)}

max =0;

for(i =

1; i <= levelnum;

++i)

//i從1開始,因為是從第一層開始

}return max;

}else

return0;

}

6. 計算指定結點p所在的層次號

int l =1;

void

leno

(bitnode* p,

int x)

++l;

//當p由上層走向下層,++l

leno

(p->lchild, x)

;leno

(p->rchild, x)

;--l;

//當p由下層返回上一層,l-1

}}

7. 交換二叉樹中每個結點的兩個子女(後序遍歷)

void

swap

(bitree bt)

}

8.計算二叉樹中各結點中最大元素的值

int max =-1

;int

max(bitree bt)

二叉樹演算法趣題

二叉樹中的節點x含有乙個變數wealth表徵了該節點的財富,定義二叉樹中節點x的heritage為其祖先節點 包括x 的所有wealth之和減去節點x的子孫節點的所有wealth之和。求二叉樹中heritage最大的節點及其值。要求不能改變原有二叉樹的結構,不能在節點之上儲存別的資訊,演算法複雜度盡...

二叉樹3(恢復二叉樹)

給一顆帶權 權值各不相同,都是小於10000的正整數 的二叉樹的中序和後序遍歷序列,找乙個葉子使得它到根的路徑上的權值盡可能小,如果有多解,取葉子權值小的。輸入中第一行為中序遍歷,第二行為後序遍歷。例如輸入 3 2 1 4 5 7 6 3 1 2 5 6 7 4 輸出輸入 7 8 11 3 5 16...

(二叉樹提高題)還原二叉樹

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入格式 輸入首先給出正整數n 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出格式 輸出為乙個整數,即該二叉樹的高度。輸入樣例 9 abdfghiec fdhgi...