溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

LeetCode中如何解決相同的樹(shù)問(wèn)題

發(fā)布時(shí)間:2022-01-17 11:51:31 來(lái)源:億速云 閱讀:98 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)LeetCode中如何解決相同的樹(shù)問(wèn)題,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

 

題目鏈接

https://leetcode-cn.com/problems/same-tree/

 

題目描述

給定兩個(gè)二叉樹(shù),編寫(xiě)一個(gè)函數(shù)來(lái)檢驗(yàn)它們是否相同。

如果兩個(gè)樹(shù)在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。

示例 1:

輸入:       1         1
         / \       / \
        2   3     2   3

       [1,2,3],   [1,2,3]

輸出: true
 

示例 2:

輸入:      1          1
         /           \
        2             2

       [1,2],     [1,null,2]

輸出: false
 

示例 3:

輸入:       1         1
         / \       / \
        2   1     1   2

       [1,2,1],   [1,1,2]

輸出: false
   

解題方案

 

思路

  • 標(biāo)簽:深度優(yōu)先遍歷

  • 終止條件與返回值:

    • 當(dāng)兩棵樹(shù)的當(dāng)前節(jié)點(diǎn)都為null時(shí)返回true

    • 當(dāng)其中一個(gè)為null另一個(gè)不為null時(shí)返回false

    • 當(dāng)兩個(gè)都不為空但是值不相等時(shí),返回false

  • 執(zhí)行過(guò)程:當(dāng)滿足終止條件時(shí)進(jìn)行返回,不滿足時(shí)分別判斷左子樹(shù)和右子樹(shù)是否相同,其中要注意代碼中的短路效應(yīng)

  • 時(shí)間復(fù)雜度:O(n),n為樹(shù)的節(jié)點(diǎn)個(gè)數(shù)

 

代碼

  • Java版本

/**
* 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 true;
       if(p == null || q == null)
           return false;
       if(p.val != q.val)
           return false;
       return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
   }
}
 
  • JavaScript版本

/**
* Definition for a binary tree node.
* function TreeNode(val) {
*     this.val = val;
*     this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} p
* @param {TreeNode} q
* @return {boolean}
*/
var isSameTree = function(p, q) {
   if(p == null && q == null)
       return true;
   if(p == null || q == null)
       return false;
   if(p.val != q.val)
       return false;
   return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
};
   

畫(huà)解

LeetCode中如何解決相同的樹(shù)問(wèn)題

LeetCode中如何解決相同的樹(shù)問(wèn)題

LeetCode中如何解決相同的樹(shù)問(wèn)題

關(guān)于“LeetCode中如何解決相同的樹(shù)問(wèn)題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI