求二叉樹的深度和寬度

2021-09-30 10:22:28 字數 856 閱讀 2657

二叉樹的深度:從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

二叉樹的寬度:二叉樹的每一層中都有一定數量的節點,節點數最多的那一層的節點數叫做二叉樹的寬度。

假設二叉樹的節點有如下資料結構:

struc node

1)求二叉樹的深度

根據剛才對二叉樹深度的說明,我們會很容易想到遞迴的方法。很顯然只有乙個節點的二叉樹的深度是1,沒有節點的二叉樹的深度是0.假設一棵二叉樹帶有兩個孩子節點,那麼我可以說這棵二叉樹的深度等於根節點的左右孩子節點的深度的最大值再加上1.假設有如下的一顆二叉樹,那麼它的深度是3,寬度是2. 10

/   \

5     15

/       /

3        12      

int deepthofthetree(node* proot)

2)求二叉樹的寬度

我們可以把二叉樹中每層的節點依次放入乙個佇列中。設定乙個變數width用於儲存樹的寬度。每一層的節點入隊時計算該層節點的數目,如果該層次節點的數目大於width的值,那麼把該層次節點的數目賦給width.如此,對二叉樹按層遍歷一遍之後width中儲存的就是該二叉樹的寬度。

int widthofthetree(node* proot)

if (ptmp->pright!=null)

}if(nextwidth>width)

width=nextwidth;

curwidth=nextwidth;

nextwidth=0;

} return width;

}

求二叉樹的深度和寬度

求二叉樹的深度和寬度.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std struct btnode 先序建立二叉樹 void creatbtree btnode root else 求二叉樹的深度 int g...

二叉樹的寬度和深度

遞迴版本 public static intgetdeep treenode root 非遞迴版本 思想 二叉樹的深度就是指二叉樹有幾層,那麼我們可以使用層序遍歷來實現。public static intgetdeep treenode root if p.right null 如果下一層沒有結點,...

二叉樹的寬度和深度

1.二叉樹的寬度 若某一層的節點數不少於其他層次的節點數,那麼該節點數即為二叉樹的寬度。在訪問過程中,我們只需要將同一層中的節點同時入棧即可。為此,我們也只需要知道上一層佇列中元素的多少,在將該queue中所有元素出佇列的同時,將下一層的元素進佇列,完成交接。這樣,便可以清晰地知道每一層中節點的多少...