【LeetCode】Same Tree
来源:互联网 发布:室内设计绘图软件 编辑:程序博客网 时间:2024/06/14 21:56
题目
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 binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } *///递归解法,如果根节点相同,再递归的看左子树和右子树是否相同public class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null){ return true; }else if(p!=null&&q!=null){ if(p.val==q.val) return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right); else return false; }else{ return false; } }}//递归2public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null){ return true; } if(p==null&&q!=null||(p!=null&&q==null)){ // if(p==null||q==null) return false; } if(p.val!=q.val){ return false; } return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}// 迭代,使用栈public boolean isSameTree(TreeNode p,TreeNode q){ if(p==null&&q==null){ return true; } if(p==null||q==null){ return false; } Stack<TreeNode> s1=new Stack<TreeNode>(); Stack<TreeNode> s2=new Stack<TreeNode>(); s1.add(p); s2.add(q); while(!s1.isEmpty()&&!s2.isEmpty()){ TreeNode t1=s1.pop(); TreeNode t2=s2.pop(); if(t1==null&&t2==null){ continue; }else if(t1!=null&&t2!=null&&t1.val==t2.val){ //注意入栈顺序 s1.push(t1.right); s1.push(t1.left); s2.push(t2.right); s2.push(t2.left); }else{ return false; } } return true;}
---EOF---
0 0
- Leetcode - Tree - Same Tree
- [leetcode][tree] Same Tree
- LeetCode: Same Tree
- LeetCode Same Tree
- [Leetcode] Same Tree
- LeetCode : Same Tree
- [LeetCode] Same Tree
- leetcode 65: Same Tree
- Leetcode 100 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
- Sicily 1010. Zipper 尾递归
- Joseph环(顺序表、链队列)
- Exercise:Sparse Autoencoder 代码示例
- 优化SQLite3数据库插入10000条数据
- usaco2.1usaco_Ordered Fractions
- 【LeetCode】Same Tree
- 数据库查询优化 查询上百万级记录提高查询速度
- IntelliJ IDEA 使用心得与常用快捷键
- 【养孩子这么贵,还是生一个算了吧】设计模式之单例模式Java版
- Forecasting with daily data
- 聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术
- Qt判断和打开进程(windows端)
- Win8 Hyper-V虚拟机 安装运行Ubuntu教程及其常见问题解答
- 漫谈程序员系列:怎样成为技术达人