LeetCode 101 Symmetric Tree
来源:互联网 发布:编写一个java程序 编辑:程序博客网 时间:2024/05/08 22:57
题目描述
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
But the following is not:
Note:
Bonus points if you could solve it both recursively and iteratively.
分析
递归
参考LeetCode 100 Same Tree,仅仅将判断条件改成p.left和q.right、p.right和q.left相比即可。
迭代
考虑用队列,每次add两个对应的结点。
如果队列长度为0,则退出循环;否则取出队列中的两个结点,对值进行判断。
代码
// recursively public static boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return isSymmetric(root.left, root.right); } static boolean isSymmetric(TreeNode p, TreeNode q) { if (p == null && q == null) { return true; } else if (p == null || q == null) { return false; } return p.val == q.val && isSymmetric(p.left, q.right) && isSymmetric(p.right, q.left); }
// iteratively public static boolean isSymmetric2(TreeNode root) { if (root == null) { return true; } Deque<TreeNode> deque = new LinkedList<TreeNode>(); if (root.left == null && root.right == null) { return true; } else if (root.left == null || root.right == null) { return false; } else { deque.addLast(root.left); deque.addLast(root.right); } while (deque.size() != 0) { TreeNode p = deque.pop(); TreeNode q = deque.pop(); if (p.val != q.val) { return false; } if (p.left == null && q.right == null) { // do nothing } else if (p.left == null || q.right == null) { return false; } else { deque.addLast(p.left); deque.addLast(q.right); } if (p.right == null && q.left == null) { // do nothing } else if (p.right == null || q.left == null) { return false; } else { deque.addLast(p.right); deque.addLast(q.left); } } return true; }
0 0
- LeetCode(101)Symmetric Tree
- LeetCode 101 Symmetric Tree
- LeetCode: Symmetric Tree [101]
- [leetcode 101] Symmetric Tree
- [LeetCode 101]Symmetric Tree
- leetcode-101 Symmetric Tree
- leetcode || 101、Symmetric Tree
- Leetcode[101]-Symmetric Tree
- leetcode[101]:Symmetric Tree
- LeetCode 101 Symmetric Tree
- leetcode 101 Symmetric Tree
- Leetcode# 101 Symmetric Tree
- leetcode 101: Symmetric Tree
- leetCode #101 Symmetric Tree
- leetcode-101-Symmetric Tree
- leetcode 101 Symmetric Tree
- LeetCode 101: Symmetric Tree
- 【LEETCODE】101-Symmetric Tree
- Altibase导出导入工具iloader
- LayoutParams参数的意义
- css选择器学习总结
- Map 是个好东西~
- 常用html、CSS、javascript前端命名规范
- LeetCode 101 Symmetric Tree
- EMWIN触摸扫描方向错误
- 安卓常用布局控件、监听器总结
- PHPStorm默认快捷键
- 黑马程序员—java基础—java基础语法:数组,二维数组,方法重载
- 调用手机通讯录并且调用发短信功能
- Bootstrap3 图片响应式
- Android之ContentProvider总结
- EJB3.0入门