码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode100 相同的树

时间:2018-12-09 12:03:24      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:pre   ==   思想   return   leetcode   tac   span   保存   bsp   

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

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




/**
 * 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) {
        if(!p && !q)
            return true;
        if((!p&&q)||(p&&!q)||(p->val!=q->val))
            return false;
        return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    }
};
/*
算法思想:
    采用迭代,利用栈保存结点然后比较结点即可。
*/
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        stack<TreeNode*> s1, s2;
        if (p)  s1.push(p);
        if (q)  s2.push(q);
        while (!s1.empty() && !s2.empty()) {
            TreeNode *t1 = s1.top(); s1.pop();  //这是关键,先取在弹栈
            TreeNode *t2 = s2.top(); s2.pop();
            if (t1->val != t2->val) 
                return false;
            
            if (t1->left) s1.push(t1->left);
            if (t2->left) s2.push(t2->left);
            if (s1.size() != s2.size()) 
                return false;
            
            if (t1->right) s1.push(t1->right);
            if (t2->right) s2.push(t2->right);
            if (s1.size() != s2.size()) 
                return false;
        }
        return s1.size() == s2.size();
    }
};

 

LeetCode100 相同的树

标签:pre   ==   思想   return   leetcode   tac   span   保存   bsp   

原文地址:https://www.cnblogs.com/parzulpan/p/10090427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!