給定兩個二叉樹s和t,判斷t是否為s的子樹。
方法一:進行對比時,s不是從根節點開始的,而t是從根節點開始的,因此,可以先計算t的高度,然後在s中找出所有高度和t相同的子樹,然後對比它們是否相同即可。
方法二:直接對s的左子樹和右子樹進行遞迴判斷,強制迴圈所有節點。class solution
return false;
}public int height(treenode root)
public boolean issame(treenode s, treenode t)
}
這種方法時間複雜度較高,176個測試案例,方法一的時間是16ms,方法二是26ms
方法三:把s和t轉化成字串,直接判斷s是否包含t,雖然這種方法看起來是o(n),但實際上涉及到棧和字串操作,測試案例的時間為39ms。public class solution
private boolean issame(treenode s, treenode t)
}
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...