LeetCode:Same Tree
来源:互联网 发布:ubuntu 16.04 skype 编辑:程序博客网 时间:2024/06/06 01:37
跟Symmetric Tree思路一样,使用Map保存节点,key是节点在所在层索引,value是节点TreeNode.
package leetcode;import java.util.HashMap;import java.util.Map;public class SameTree {/** * @param args */public static void main(String[] args) {TreeNode node = new TreeNode(0);//node.left = new TreeNode(2);//node.right = new TreeNode(2);TreeNode node2 = new TreeNode(1);//node2.left = new TreeNode(2);SameTree s = new SameTree();System.out.println(s.isSameTree(node, node2));}public boolean isSameTree(TreeNode p, TreeNode q) {if (p == null && q != null) {return false;}if (p != null && q == null) {return false;}if (p == null && q == null) {return true;}if (p.val != q.val ) {return false;}Map<Integer, TreeNode> father1 = new HashMap<Integer, TreeNode>();Map<Integer, TreeNode> child1 = new HashMap<Integer, TreeNode>();father1.put(0, p);Map<Integer, TreeNode> father2 = new HashMap<Integer, TreeNode>();Map<Integer, TreeNode> child2 = new HashMap<Integer, TreeNode>();father2.put(0, q);while (true) {child1.clear();for (Integer key : father1.keySet()) {TreeNode node = father1.get(key);if (node.left != null) {child1.put(key * 2 + 0, node.left);}if (node.right != null) {child1.put(key * 2 + 1, node.right);}}child2.clear();for (Integer key : father2.keySet()) {TreeNode node = father2.get(key);if (node.left != null) {child2.put(key * 2 + 0, node.left);}if (node.right != null) {child2.put(key * 2 + 1, node.right);}}if (child1.isEmpty() && child2.isEmpty()) {break;} else {if (child1.isEmpty() && !child2.isEmpty()) {return false;} else if (!child1.isEmpty() && child2.isEmpty()) {return false;}}for (Integer index : child1.keySet()) {TreeNode node1 = child1.get(index);TreeNode node2 = child2.get(index);if (node2 == null || node2.val != node1.val) {return false;}}Map<Integer, TreeNode> temp = father1;father1 = child1;child1 = temp;temp = father2;father2 = child2;child2 = temp;}return true; }}
- 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
- OpenWrt资料
- 如何改变下拉菜单中文字颜色和背景色
- 数论练习专题
- HDU 2037 今年暑假不AC
- The web application [/struts1] created a ThreadLocal with key of type
- LeetCode:Same Tree
- opencv学习(6)---仿射变换
- 念数字
- hdu 2688 Rotate (树状数组)
- C#中从数据库导出至txt
- 通过memcached来实现对tomcat集群中Session的共享策略
- poj 2502 Subway
- c++11简单介绍
- 迟来的毕业答辩再现