1. 程式人生 > >二叉樹求深度

二叉樹求深度

文章目錄


題目

求二叉樹的深度。第一行n表示二叉樹節點個數,接下來的n-1行第一個數表示根節點,第二個節點表示孩子節點。
5
0 1
0 2
1 3
1 4

思想

第一步:存二叉樹(用二維陣列存)
第二步:採用先序遍歷,求深度

程式碼

public class Main {
	private static int max=0;//用於存二叉樹最大的深度
	private static int now=0;//當前的深度
	public static void main(String[
] args) { //輸入 Scanner s=new Scanner(System.in); int size=Integer.parseInt(s.nextLine()); int [][]a=new int[size][2]; for(int i=0;i<size;++i){ a[i][0]=-1; a[i][1]=-1; } while(s.hasNextLine()){ String str=s.nextLine(); String[] temp=str.split("\\s+"); if(temp.length!=2){ break
; } int parent=Integer.parseInt(temp[0]);//根節點 int child=Integer.parseInt(temp[1]);//孩子節點 if(a[parent][0]==-1){ a[parent][0]=child; }else{ a[parent][1]=child; } } //進行深度遍歷求二叉樹深度 boolean v[]=new boolean[size];//標記節點是否已經被放問了 go(a,v,0); System.out.println(max); } public static
void go(int[][]a,boolean[] v,int position){ if(position==-1){ max=now>max?now:max; return ; } v[position]=true; now++; go(a,v,a[position][0]); go(a,v,a[position][1]); now--;//左右試探完成後回溯 return; } }

執行結果

在這裡插入圖片描述