Leetcode 之 Same Tree
2014-11-10 11:27
330 查看
问题:
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.
解决思路:对两棵树采用深度优先遍历,每次遍历检查节点的结构和值是否一样。只需要在某种遍历树的方法的时候,确保当前遍历节点的结构和值是一样的即可。
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.
解决思路:对两棵树采用深度优先遍历,每次遍历检查节点的结构和值是否一样。只需要在某种遍历树的方法的时候,确保当前遍历节点的结构和值是一样的即可。
#include <stack> /** * Definition for binary tree * 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 == NULL && q== NULL){ return true; } <span style="white-space:pre"> </span>if(p == NULL || q == NULL ) return false; // if((p == NULL && q != NULL) || (p != NULL && q == NULL)) // return false; std::stack<TreeNode *> p_stack; std::stack<TreeNode *> q_stack; p_stack.push(p); q_stack.push(q); while(!p_stack.empty()){ TreeNode* p_current = p_stack.top(); p_stack.pop(); TreeNode* q_current = q_stack.top(); q_stack.pop(); if(p_current->val == q_current->val) { if((p_current->left && !q_current->left) || (!p_current->left && q_current->left) || (!p_current->right && q_current->right) || (p_current->right && !q_current->right) ){ return false; } if(p_current->left && q_current->left){ if(p_current->left->val != q_current->left->val) return false; p_stack.push(p_current->left); q_stack.push(q_current->left); } if(p_current->right && q_current->right){ if(p_current->right->val != q_current->right->val) return false; p_stack.push(p_current->right); q_stack.push(q_current->right); } }else{ return false; } } } };
相关文章推荐
- (java)leetcode Same Tree
- leetcode 100 —— Same Tree
- leetcode Same Tree
- [leetcode]_Same Tree
- LeetCode Same Tree
- Leetcode::SameTree
- 4.5 leetcode -5 same-tree
- LeetCode:Same Tree - 判断两颗树是否相等
- LeetCode Same Tree
- LeetCode:same_tree题解
- [LeetCode] [Same Tree 2012-09-03 ]
- leetcode笔记:Same Tree
- LeetCode Same Tree
- Leetcode在线编程same-tree
- LeetCode: Same Tree
- LeetCode:Same Tree
- leetcode100题< Same Tree >(java)
- leetCode(14):Invert Binary Tree and Same Tree 分类: leetCode 2015-06-21 11:48 170人阅读 评论(0) 收藏
- LeetCode@Tree_100_Same_Tree
- leetcode 65: Same Tree