zoukankan      html  css  js  c++  java
  • 【leetcode刷题笔记】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.

    解题:还是简单的递归,把情况考虑清楚就可以了:

    根节点都为空,树相同;

    根节点一方为空,另一方不为空,树不相同;

    根节点值不想等,树不相同;

    否则,递归比较左右子树是否相同。

    代码:

     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     bool isSameTree(TreeNode *p, TreeNode *q) {
    13         if(p == NULL && q == NULL)
    14             return true;
    15         if((p == NULL && q != NULL) ||(p != NULL && q == NULL))
    16             return false;
    17         if(p->val != q->val)
    18             return false;
    19         return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    20     }
    21 };

     Java版本代码:

     1 public class Solution {
     2     public boolean isSameTree(TreeNode p, TreeNode q) {
     3         int ispempty = p == null?0:1;
     4         int isqempty = q == null?0:1;
     5         if(ispempty != isqempty)
     6             return false;
     7         return isSameTreeHelper(p, q);
     8     }
     9     public boolean isSameTreeHelper(TreeNode p,TreeNode q){
    10         if(p == null && q == null)
    11             return true;
    12         if(p.val != q.val)
    13             return false;
    14         
    15         int pleftempty = p.left == null?0:1;
    16         int qleftempty = q.left == null?0:1;
    17         if(pleftempty != qleftempty)
    18             return false;
    19         if(isSameTreeHelper(p.left, q.left) == false)
    20             return false;
    21         
    22         int prightempty = p.right == null?0:1;
    23         int qrightempty = q.right == null?0:1;
    24         if(prightempty != qrightempty)
    25             return false;
    26         if(isSameTreeHelper(p.right, q.right) == false)
    27             return false;
    28         
    29         return true;
    30         
    31     }
    32 }

    Java版本写复杂了=。=

  • 相关阅读:
    第二次作业——App案例分析
    第一次作业--四则运算
    一点感想
    结对编程1
    第二次作业
    第一次作业-四则运算
    我的第一篇博客
    第二次作业
    结对编程
    第二次作业 APP分析
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3637807.html
Copyright © 2011-2022 走看看