對稱的二叉樹 二叉樹的下乙個結點

2021-08-17 04:42:38 字數 1319 閱讀 1108

1、對稱二叉樹

1.1 題目:請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。

1.2 原理:需要注意的是,題目中同樣的理解,必須是結構一樣,且對應節點的值也要是一樣的。遍歷的思想,對於根節點的左右子樹可以分別將其看成兩個二叉樹1和樹2,同時遍歷兩個二叉樹,只要對應的值相當,每次遍歷中比較樹1的左節點與樹2的右節點,樹1的右節點和樹2的左節點,核心在這裡,保證對稱關係

1.3 **:

// 遍歷二叉樹

bool pre(treenode* p1, treenode* p2)

else

}class solution

};

1.4 總結:

(1)在意這種雙二叉樹同時遍歷的這種做法,本質上和普通的二叉樹的遍歷是沒有區別的,只不過每次的訪問節點,同時訪問了另個節點。

(2)映象二叉樹和原二叉樹的區別和聯絡。主要是對稱的。

2、二叉樹的下乙個結點

2.1 題目描述

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

2.2 原理:由於是中序遍歷,所以不要管左子樹了,因為訪問到當前的結點的時候,其左子樹如果存在一定已經被訪問過了。因此可以分為以下幾張情況:

(1)當前節點的右子樹存在:直接返回其右子樹的最左的節點指標即可。

(2)當前節點的右子樹不存在:這種情況較為複雜,再分為兩種情況討論。

1、當前節點是其父節點的左子樹,那麼下乙個要訪問的就是其父節點

2、當前節點是其父節點的右子樹,這種情況最複雜,需要繼續回溯其父節點,只到找到其是父節點的左子樹為止。

2.3 **:

struct treelinknode 

};class solution }}

//當前節點的右子樹存在

else

return

null;

}};

2.4 總結和注意:

1、這種複雜且多樣情況的二叉樹的問題,一定注意沉下心來,一點點分析,吧各種可能出現的情況想清楚以及對應的解決思路,先自己的在草稿紙上畫一畫,想清楚,切記不動筆直接空想,多種情況按順序進行區別。

2、涉及到二叉樹的問題,一定注意判斷指標的存在性,只有指標存在了,才能對其節點進行操作,這是關鍵中的關鍵,程式設計上的注意。

二叉樹的下乙個結點 對稱的二叉樹

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。二叉樹為空,返回空 結點的右孩子存在,設定指標從右孩子出發,沿著左子結點出發直到找到葉子節點,這個就是下乙個節點 結點不是根結點,如果是父節點的左孩子,返回父節點 如...

二叉樹 二叉樹的下乙個結點

題目描述 給定一棵二叉樹和乙個結點,要求找到中序遍歷此樹時該結點的下乙個結點。分析 中序遍歷一棵二叉樹時,要根據乙個結點有無右子樹而分開討論。若當前結點有右子樹,則它的下乙個結點就是其右子樹的最左葉子結點 若當前結點沒有右子樹,那麼又分兩種情況 若當前結點是其父節點的左孩子結點,那麼其下乙個結點就是...

樹 二叉樹的下乙個結點

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。思路 如果乙個結點有右子樹,那麼它的下乙個結點就是它的右子樹中的左子結點。也就是說右子結點出發一直沿著指向左子結點的指標,我們就能找到它的下乙個結點。接著我...