刷題---樹篇---100. 相同的樹

100. 相同的樹

給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。

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

示例 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

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

_____________________________________________________________________________________________________

同時對兩棵樹(p,q)進行遍歷,對每個節點的情況有:

(1)p爲null,q不爲null,不相同,返回false

(2)p爲null,q爲null,相同,繼續遍歷或返回

(3)p不爲null,q不爲null,且p.val != q.val ,不相同,返回false

(4)p不爲null,q不爲null,且p.val == q.val ,相同,返回true

按照上述四種代碼實現即可,使用遞歸技巧。

代碼如下:

func isSameTree(p *TreeNode, q *TreeNode) bool {
    if p == nil && q != nil {
        return false
    } 
    if p != nil && q == nil {
        return false
    }
    if p != nil && q != nil && p.Val != q.Val {
        return false
    }
    if p == nil && q == nil {
        return true
    }
    
    l := true
    r := true
    l = isSameTree(p.Left,q.Left)
    r = isSameTree(p.Right,q.Right)

    return l && r
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章