演算法菜鳥之映象二叉樹判斷

2021-10-12 20:51:12 字數 974 閱讀 7841

問題描述

給定一顆二叉樹,判斷其是否使映象的。例如:

這棵樹是對稱的,而下面這棵樹是非對稱的:

問題分析

判斷一棵樹是否映象對稱,關鍵看該二叉樹的左右子樹是否映象對稱。進一步地,如果將右(左)子樹的所有節點左右互換,其與左(右)子樹應該完全相同。基於這個思路,演算法分兩個步驟:①互換右子樹的左右節點;②判斷互換後的右子樹與左子樹是否完全一樣,只要有一點不一樣,則直接返回false。

**

class

solution

q.pop();

} queue

> q1;

queue

> q2;

q1.push

(root-

>left)

; q2.

push

(root-

>right)

;while

(q1.

size()

)else

if(q1.

front()

&&q2.

front()

)else

return

false

;//其他情況均返回false

}else

return

false

;//其他情況均返回false

}return

true;}

};

總結

考察對指標的替換、對特殊情況(空樹、單節點樹)的處理以及資料結構的熟練使用(結合樹與佇列更方便)。

LeetCode之映象二叉樹(簡單 二叉樹)

問題描述 給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。遞迴 definit...

映象二叉樹

映象二叉樹與二叉樹的區別是左右孩子對於根節點的相對大小剛好相反不用建立映象樹,通過對原樹的映象便歷,即可得到所需的東西。後序 樹 lr根,映象 rl根。如果創立映象二叉樹,insert 改一下即可,這樣可以把preordermirror 等去掉。對於遍歷後的排序放到vector陣列裡便於比較,而且進...

映象二叉樹

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。思路 1 獲取源二叉樹的映象,將源二叉樹的左右子樹交換即可 2 主要步驟 若二叉樹為空,直接返回 若二叉樹不為空,交換其左右子樹 遞迴的將二叉樹的其他結點進行交換 public class treenode public class soluti...