1. 程式人生 > 其它 >LeetCode-100-相同的樹

LeetCode-100-相同的樹

相同的樹

題目描述:給你兩棵二叉樹的根節點 pq ,編寫一個函式來檢驗這兩棵樹是否相同。

如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。

示例說明請見LeetCode官網。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/same-tree/
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解法一:遞迴

使用遞迴的方法,遞迴方式如下:

  • 首先,如果p和q都為null,則返回true;
  • 如果p和q只有一個為null,則返回false;
  • 如果p和q都不為null,如果p和q的值不相等,則返回false;如果p和q的值相等,則遞迴判斷p和q的左右子樹是不是都相等。

遞迴結束,即可得到結果。

public class LeetCode_100 {
    public static boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }
        if ((p == null && q != null) || (p != null && q == null)) {
            return false;
        }
        return p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

    public static void main(String[] args) {
        TreeNode p = new TreeNode(1);
        p.left = new TreeNode(2);
        p.right = new TreeNode(3);

        TreeNode q = new TreeNode(1);
        q.left = new TreeNode(2);
        q.right = new TreeNode(3);

        System.out.println(isSameTree(p, q));
    }
}

【每日寄語】 凡事盡力,結果隨緣,心懷感恩,知足常樂。