1. 程式人生 > 資訊 >馬斯克:特斯拉 FSD Beta 10 將於下週五午夜釋出

馬斯克:特斯拉 FSD Beta 10 將於下週五午夜釋出

Leetcode100.相同的樹

題目描述

/**
     * 給你兩棵二叉樹的根節點 p 和 q ,編寫一個函式來檢驗這兩棵樹是否相同。
     *
     * 如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
     */

思路分析

  1. 判斷兩棵樹是否相同,既要判斷樹的結構是否相同,還有判斷對應位置的節點值是否相等
  2. 使用深度優先的思路,即遞迴的判斷當前樹及其左子樹是否在結構和節點值上相等
  3. 判斷思路
    • 先判斷節點是否為空,如果為空,說明樹結構相同
    • 如果節點有一個不為空,說明結構不相同
    • 然後判斷節點值是否對應相等
    • 遞迴左子樹和右子樹
  4. 原始碼見下

原始碼及分析

 /**
     *
     * @param p 根節點p
     * @param q 根節點q
     * @return
     * 使用深度優先的思路
     */
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //如果兩棵樹都為空,則返回true
        if (p == null && q == null){
            return true;
            //否則兩棵樹結構不相同,返回假
        }else if (p == null || q == null){
            return false;
            //判斷結構形同後,再判斷值是否相等
        }else if (p.val != q.val){
            return false;
        }else {
            //遞迴判斷左子樹和右子樹
            return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
        }

    }