1. 程式人生 > >Leetcode#100. Same Tree(判斷兩個二叉樹相同)

Leetcode#100. Same Tree(判斷兩個二叉樹相同)

題目

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

題意

給你兩個二叉樹p和q,寫一個函式判斷是否相同。
兩個二叉樹完全相同即結構,結點和結點的值也相同。

分析

遞迴的應用,分析遞迴模型

  • p和q都為空,返回true。
  • p和q其中一個為空,返回false。
  • p和q不同為空且p和q對應的值相同為true,不同為false。
  • 其他情況,返回false。

C++語言

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) 
    {
        bool like1,like2;
        //同為空
if( p==NULL && q==NULL) return true; //其中一個為空 else if(p == NULL || q==NULL) return false; else if(p->val == q->val) { like1 = isSameTree(p->left,q->left); like2 = isSameTree(p->right,q->right); return
(like1&&like2); } else return false; } };

Python語言

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def isSameTree(self, p, q):

        if p == None and q == None:
            return True
        elif p == None or q == None:
            return False
        elif p.val == q.val:
            like1 = self.isSameTree(p.left,q.left)
            like2 = self.isSameTree(p.right,q.right)
            return like1 and like2
        else:
            return False