另一顆的子樹

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
      public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q!=null) {
            return false;
        }
        if(p != null && q==null) {
            return false;
        }
        if(p == null && q == null) {
            return true;
        }
        if(p.val != q.val) {
            return false;
        }
        return 
        isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
    public boolean isSubtree(TreeNode s, TreeNode t) {
        //判斷一個樹是否是一個樹的子樹,則我們要找到一個與我們要找啊的這個樹的結構一模一樣,
        //這裏一模一樣指的是不是全部一樣而是說   樹中有一個子樹和我們要找的子樹一模一樣。
        
        if(s==null||t==null){
            //判斷兩個樹是否爲空
            return false;
        }
        //調用是isSameTrre方法將s和t進寫判斷
        if(isSameTree(s,t))
        return true;
        //這步需要我們在左子樹中找到與t相等的樹
        if(isSubtree(s.left,t))
        return true;
        //這步需要我們在右子樹中找到與t相等的樹
        if(isSubtree(s.right,t))
        return true;
        return false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章