Find the max key in a binary tree
通常會先從最左邊開始尋找,並且比對左右子節點是否存在,又或是比較值的大小
使用佇列方式跟level order使用queue的方式差不多,只是多了一個變數跟一個條件判斷,用來處理當二元樹裡的節點大於原本的節點時,就更新變數
Count number of nodes in binary tree
利用遞迴判斷是否存在左右子節點,如果存在就加1,並且再加1,並且回傳
使用佇列方式是使用一個變數來代表size,在dequeue之前把變數加1,並且不斷的加入左右子節點,然後再dequeue把size加1,最後回傳
Find the deepest node in binary tree
隨著遞迴level也會跟著增加,在當左右子節點都不能加入時,就會回傳當前的level
用佇列的話就是不斷地加入直到無法加入時就把該值回傳
Count leaf nodes in binary tree
當該節點的左右子節點都皆為NULL時,就回傳1代表樹葉節點
加入佇列後判斷該節點的左右子節點是否為NULL,如果是就把變數加1
Count full nodes in a Binary tree
利用遞迴確定當該節點有左右子節點時,就回傳1,最後加總起來就是全部full nodes
把節點加入到佇列後,一樣判斷是否擁有兩個子節點,如果有就加1
Count half nodes in a Binary Tree
跟判斷full nodes一樣,只是會改成當有其中一個子節點時,就回傳1
當加入進佇列裡的節點,擁有一個子節點時,就把變數加1
Sum of all nodes in a binary tree
利用遞迴來回傳自己的值,以便後續增加
使用佇列的話,就是不停地加入,然後在dequeue時,就把變數增加節點的值
Find height of binary tree
如果左子節點大於右子節點的話,就回傳左子節點並加1,因為包括自己
Maximum Level Sum of a Binary Tree
在加入一個節點後,也順便加入NULL節點,代表一個level的結束
Find ancestors of given node in a Binary Tree
透過遞迴來尋找傳入的值,如果找到的時候,就回傳1來印出祖先節點
利用迴圈來推入節點,如果該節點就是要找的值,就會離開迴圈印出資料
Lowest common ancestor in a binary tree
Convert binary tree to mirror tree
當找到左右子節點後,就把左右子節點交換