(劍指Offer)32 從上往下列印二叉樹

2021-09-11 06:31:46 字數 910 閱讀 6623

題目描述

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

遞迴的版本

這個遞迴的版本很有意思的地方在於他建立了乙個深度的函式用來判斷樹的深度,然後根據深度決定root向下偏移幾次。

public void printfromtoptobottom(treenode root)

for(int i=1;i<=length;i++)

}public void countdepth(treenode root)

int l = countdepth(root.left);

int r = countdepth(root.right);

if(l > r)else

}public void printnode(treenode root,int level)

if(level == 1)

printnode(root.left,level-1);

printnode(root.ringth,level-1);

}

非遞迴的版本

雖然有兩種方式,但是更喜歡這個版本第一次見到了佇列的用法。

一開始我的思路是遞迴的去實現這個方法,但是我想法特別簡單的就是簡單的遞迴,但是問題在於我遞迴是深度遞迴並不能顯示同一層級的內容。

queue的api

offer()

poll()

isempty()

size()

public arraylistprintfromtoptobottom(treenode root)

if(temp.left.right != null)

} return result;

}

劍指offer 32 從上往下列印二叉樹

這道題題目可以描述為 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。typedef int datatype typedef struct bstreenode bstreenode bstreenode createnode int data 本題的思路為 定義乙個佇列,每一...

劍指Offer Python 從上往下列印二叉樹

題目 從上往下列印二叉樹 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution 返回從上到下每個節...

劍指offer第32 從上往下列印二叉樹

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。coding utf 8 classtreenode def init self x self.val x self.left noneself.right noneclasssolution 返回從上到下每個節點值列表,例 1,2,3 defp...