求二叉樹的深度

2021-09-21 18:57:49 字數 1295 閱讀 6527

對於二叉樹的最大的深度,可以採用遞迴演算法。 

演算法描述如下: 

如果根結點為null,那麼深度=0 

如果根結點不是null,那麼就看該當前結點的左孩子的深度和右孩子的深度 

如果左孩子深度》=右孩子的深度,那麼當前根結點的深度就是左孩子的深度+1. 

反之則為右孩子的深度+1

對每個左孩子右孩子也是採用同樣的演算法。到某一節點是null的時候,才能返回0;

之前的文章有關於二叉樹遍歷的演算法的描述。此處,對於遍歷可以做一些小的改進,使它可以在遍歷的時候計算出當前節點的深度。只要在遞迴方法中加入乙個深度引數,每次呼叫的遞迴方法的時候,該引數都會自增1.則可以計算出深度。

假設構造出2棵樹

字母樹數字樹

採用演算法計算深度,和遍歷。

結果如下:

具體**如下:

using

system;   

using

system.collections.generic;   

using

system.linq;   

using

system.text;  

namespace

tree   

public

node(

string

value)   

public

void

assignchild(node left, node right)

//設定左右孩子 

public

bool

hasleftchild

//是否有左孩子 

}  public

bool

hasrightchild

//是否有右孩子 

}  public

bool

haschild

//是否有右孩子 

}   

}  #endregion 

class

program   

//計算深度 

static

intmaxdepth(node root)   

else

else

}   

}  //先序遍歷 //dlr 

static

void

preorder_visit_depth(node anode,

intdepth)   

if(anode.hasrightchild)   

}   

}  }   

二叉樹(三)求二叉樹的深度

採用先序法建立一棵二叉樹,設計求該二叉樹的深度,二叉樹的資料域型別為字元型,擴充套件二叉樹的葉子結點用 表示,要求可以求多棵二叉樹的深度,當二叉樹的深度為0時程式結束。輸入描述 迴圈輸入多棵擴充套件二叉樹的先序遍歷序列,每棵樹佔一行,以回車結束,每棵二叉樹中結點之間以空格隔開輸出描述 輸出各二叉樹的...

求二叉樹的深度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。解體思路 如果根節點為空,則深度為0,返回0,遞迴的出口 如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,比較左右子樹深度值,返回較大的那乙個 ...

求二叉樹的深度

已知一顆二叉樹的中序遍歷序列和後序遍歷序列,求二叉樹的深度。輸入資料有多組,輸入t 代表有t 組資料。每組資料報括兩個長度小於50 的字串,第乙個字串表示二叉樹的中序遍歷,第二個表示二叉樹的後序遍歷。輸出二叉樹的深度。2 dbgeafc dgebfca lnixu linux 4 3 include...