判斷一棵二叉樹是不是另一棵二叉樹的子樹

2021-07-13 02:32:49 字數 589 閱讀 4260

定義:父樹包含子樹的所有節點,注意,空樹不是任何數的子樹。

父樹:a 

子樹:b

解法:用遞迴來實現,從a樹的根節點開始,判斷其所有的節點是不是依次和樹b相同,如不同,遞迴呼叫函式,繼續判斷樹a當前節點的左子樹的所有節點或右子樹的所有節點是否和樹b所有節點相同,直到遍歷到父樹a的葉子節點,如果不是完全相同,則樹b不是樹a子樹,如果直到遍歷到樹b的葉子節點,其所有節點在樹a中均有,則樹b是樹a的子樹。

**如下:

/**

public class treenode }*/

public class solution

return issubtree(root1,root2)||hassubtree(root1.left,root2)||hassubtree(root1.right,root2);

}public boolean issubtree(treenode root1,treenode root2)

if(root1==null)

if(root1.val==root2.val)

return false;

}}

判斷一棵樹是不是完全二叉樹

還有一種特殊的完全二叉樹就是葉子節點都在同一層的,如下圖 完全二叉樹定義,若設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。思路是 用bfs,一層一層的遍歷二叉樹的節點,一但遍歷到空節點,那麼不在往佇列裡加入...

判斷一棵樹是不是完全二叉樹

分析 假設一棵樹是完全二叉樹,層數為k,那麼可以得到以下結論 1.前k 1層節點肯定都是飽和的,即到達了最大值 2.第k 1層不一定所有的節點都有孩子節點,如果有孩子節點,那麼一定是左孩子節點。所以我們要先找到第乙個孩子不全的節點,如果只有右孩子節點,那麼一定不是完全二叉樹。找到第乙個不飽和節點後,...

判斷一棵樹是不是完全二叉樹

解題思路 設定乙個標誌位,判斷屬於哪個階段。階段一 任何乙個節點,一定有兩個子樹。階段二 任何乙個節點,一定沒有子樹。描述 public class completetree public boolean iscompletetree node root 設計標誌位進行階段轉化 boolean is...