leetcode: (100) Same Tree
2015-09-05 16:00
302 查看
[]
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.
方法:遍历两树,并比较结点的值
本题采用中序遍历的栈操作的非递归方法
/**
* 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) {
TreeNode *first,*second;
first = p;
second = q;
stack<TreeNode*> sta1;
stack<TreeNode*> sta2;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
while((p!=NULL&&q!=NULL)||(!sta1.empty()&&!sta2.empty()))
{
while(p!=NULL&&q!=NULL)
{
sta1.push(p);
sta2.push(q);
p=p->left;
q=q->left;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
}
if(!sta1.empty()&&!sta2.empty())
{
p=sta1.top();
sta1.pop();
q=sta2.top();
sta2.pop();
if(p->val!=q->val) return false;
p=p->right;
q=q->right;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
}
}
return true;
}
};
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.
方法:遍历两树,并比较结点的值
本题采用中序遍历的栈操作的非递归方法
/**
* 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) {
TreeNode *first,*second;
first = p;
second = q;
stack<TreeNode*> sta1;
stack<TreeNode*> sta2;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
while((p!=NULL&&q!=NULL)||(!sta1.empty()&&!sta2.empty()))
{
while(p!=NULL&&q!=NULL)
{
sta1.push(p);
sta2.push(q);
p=p->left;
q=q->left;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
}
if(!sta1.empty()&&!sta2.empty())
{
p=sta1.top();
sta1.pop();
q=sta2.top();
sta2.pop();
if(p->val!=q->val) return false;
p=p->right;
q=q->right;
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)) return false;
}
}
return true;
}
};
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#非递归先序遍历二叉树实例
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C语言实现二叉树遍历的迭代算法
- 用C语言判断一个二叉树是否为另一个的子结构
- C++实现二叉树非递归遍历方法实例总结
- C++二叉树结构的建立与基本操作
- 深入遍历二叉树的各种操作详解(非递归遍历)
- JavaScript数据结构和算法之二叉树详解
- java使用归并删除法删除二叉树中节点的方法
- Java中二叉树数据结构的实现示例
- python数据结构之二叉树的建立实例
- python数据结构树和二叉树简介
- python数据结构之二叉树的统计与转换实例