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

2021-08-17 05:02:28 字數 729 閱讀 4513

給定兩個二叉樹s和t,判斷t是否為s的子樹。

方法一:進行對比時,s不是從根節點開始的,而t是從根節點開始的,因此,可以先計算t的高度,然後在s中找出所有高度和t相同的子樹,然後對比它們是否相同即可。

class solution 

return false;

}public int height(treenode root)

public boolean issame(treenode s, treenode t)

}

方法二:直接對s的左子樹和右子樹進行遞迴判斷,強制迴圈所有節點。

這種方法時間複雜度較高,176個測試案例,方法一的時間是16ms,方法二是26ms

public class solution 

private boolean issame(treenode s, treenode t)

}

方法三:把s和t轉化成字串,直接判斷s是否包含t,雖然這種方法看起來是o(n),但實際上涉及到棧和字串操作,測試案例的時間為39ms。

public boolean issubtree(treenode s, treenode t) 

public string generatepreorderstring(treenode s)

}return sb.tostring();

}

判斷一棵二叉樹是否為平衡二叉樹

1.先給出樹節點資訊 typedef struct treetree,bitree 2.原理 判斷一棵樹是否為平衡二叉樹,要滿足每個節點的左右子樹的高度之差的絕對值不大於1。因此,我們這裡可以比較每個節點的左右字數高度,判斷他們差的絕對值是否滿足平衡二叉樹的條件即可 3.演算法 求二叉樹高度演算法 ...

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

層次遍歷乙個二叉樹,掃瞄到某個結點左孩子或右孩子為空時即停止,檢查此時佇列內所有結點是否均為葉子結點 include include define false 0 define true 1typedef int status typedef int elemtype typedef struct ...

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

思路 遞迴方式判斷,返回的資訊應該有兩個 1 這棵樹是否是平衡的 2 這棵樹的高度為多少 public class isbalancedtree public static class returndata public static returndata process node head ret...