Leetcode 之 Same Tree
来源:互联网 发布:ak47军刺多少钱淘宝 编辑:程序博客网 时间:2024/04/28 07:01
问题:
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; } } }};
0 0
- leetcode之Same Tree
- leetcode之same tree
- leetcode 之 Same Tree
- LeetCode之Same Tree
- LeetCode之Same Tree
- Leetcode 之 Same Tree
- LeetCode之Same Tree
- leetcode之Same Tree
- leetcode 之 same tree
- leetcode之Same Tree
- LeetCode之Same Tree
- Leetcode - Tree - Same Tree
- [leetcode][tree] Same Tree
- LeetCode之路:100. Same Tree
- LeetCode: Same Tree
- LeetCode Same Tree
- [Leetcode] Same Tree
- LeetCode : Same Tree
- eclipse 常用插件
- LR做接口压力测试时,后台打印日志的异常信息
- Python 使用list实现简单的堆栈
- UVA10375 Choose and divide 质因数分解
- Latent semantic analysis note(LSA) or Latent Semantic Indexing (LSI)
- Leetcode 之 Same Tree
- 美日汇
- android的bluetooth
- MPlayer
- Erlang 单元测试
- 写在Android开发之初
- 可怜的js居然没有块级作用域
- 公交路线查询
- 『IOS』How to deal with Icon@2x.png in svn?