劍指offer(60) 二叉樹的下乙個節點

2021-07-11 13:06:32 字數 759 閱讀 3483

題目描述

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

分析

結構如圖:虛線表示指向父節點的指標。

如果乙個節點具有右子樹,則它的下乙個節點就是它的右子樹中的最左子節點。例如,a的下乙個節點是f,b的下乙個節點是h。

如果乙個節點沒有右子樹並且它是父親節點的左子節點,則它的下乙個節點就是父親節點。例如,d的洗衣歌節點是b,f的下乙個節點是c。

如果乙個節點沒有右子樹並且它是父親節點的右子節點,則比較複雜:需要沿著父節點的指標一直向上遍歷,直到找到乙個是它父節點的左子節點的節點。如果這樣的節點存在,那麼這個節點的父節點就是我們要找的下乙個節點。 例如i的下乙個節點是a。

牛客ac:

/*

public class treelinknode }*/

public

class

solution else

if (pnode.next != null)

pnext = pparent;}}

return pnext;}}

參考

1. 何海濤,劍指offer名企面試官精講典型程式設計題(紀念版),電子工業出版社

劍指offer60 把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。二叉樹的層序遍歷高階版 基礎版 二叉樹的層序遍歷,乙個陣列輸出,不用記錄當前層有沒有遍歷完 基礎版層序遍歷 高階版 本題,要記錄當前層有沒有遍歷完 高階版plus 按之字形列印,不但要記錄當前層有沒有遍歷完,還要記錄當前遍歷的層數 之字...

劍指offer(60)把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。從上到下列印二叉樹我們知道用佇列可以實現,但是如果多行列印怎麼做呢?我們需要分割,在行與行之間進行分割。如何分割呢?肯定要知道個數才能分割。可是我又如何知道這一行有多少個呢?這就是重點了,我們可以通過遍歷上一層,通過它們的子樹就可以知道...

《劍指offer》 60 把二叉樹列印成多行

題目 從上到下安層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印一行。例如,圖 1 中二叉樹以及列印結果為 這個題其實很簡單,我們只需要設定兩個變數就可以搞定。乙個變數表示當前層中還沒有列印的結點數,另乙個變數表示下一層結點的數目。具體實現 如下 include include using...