牛客網刷題 Q1判斷一顆二叉樹是不是對稱(簡單)

2021-08-29 04:04:19 字數 781 閱讀 4907

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

分析:如果乙個二叉樹是對稱的,那麼這個二叉樹的第 n 層中,第 i 個元素與第(2*n-i+1)個元素是相等的。即如下圖所示:

解題思路

(1)首先考慮第一層。如果第一層為空,則直接返回true;否則判斷第二層。

(2)第二層。如果第二層全為空,則直接返回true;如果第二層其中乙個節點為空,則返回false;如果第二層都有值,值不相等則返回false,值相等則判斷第三層。

(3)第三層。第三層則需要比較兩個:第二層左節點的左子與右節點的右子比較;第二層左節點的右子與右節點的左子。比較方式與第二層相同。

(4)再往下就可以看出這是乙個遞迴過程,第四層的操作和第三層一樣,故可以採用遞迴的方法。

解題**

//該注釋**是題目給的對二叉樹的定義,寫**時需要用到下面的資訊

/*public class treenode }*/

//以下是解題**

public class solution

private boolean isequal(treenode left, treenode right)

}

判斷一顆二叉樹是是否是另一顆樹的子樹。

什麼樣的情況下,某一棵樹會成為另一棵樹的子數呢?子樹的根節點是某一棵樹的某個節點,接下來的子節點也相同,則該樹是另一棵樹的子集。首先找到與根節點相同的節點,在進行遍歷,可使用遞迴法。template struct treenode template bool check treenode root1...

判斷一顆二叉樹是否是平衡二叉樹

方法一,參考 template typename t intdepthtree bstreenode pbs template typename t bool isbalancetree bstreenode pbs intdepthleft depthtree pbs left intdepthr...

判斷一顆二叉樹是否是平衡二叉樹

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。definition for a binary tree node.public class treenode class solution int left treede...