[leetcode]解决Symmetric Tree的一点小心得
来源:互联网 发布:ubuntu16.04 网络映射 编辑:程序博客网 时间:2024/06/05 18:51
本次选择的题目是
Given a binary tree, check whether it is a mirror of itself (ie,symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3] is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following [1,2,2,null,3,null,3] is not:
1 / \ 2 2 \ \ 3 3
Note: Bonus points if you could solve it both recursively and iteratively.
Solution:
运用递归的方法:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public boolean isSymmetric(TreeNode root) { return root == null || isSymmetricforLandR(root.left, root.right); } private bool isSymmetricforLandR(TresNode l, TreeNode r){ if(l == null || r == null){ return l == r; } if(l.val != r.val){ return false; } return isSymmetricforLandR(l.left, r.right) && isSymmetricforLandR(l.right, r.left); }}
不用递归:
public boolean isSymmetric(TreeNode root) { if(root==null) return true; Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode left, right; if(root.left!=null){ if(root.right==null) return false; stack.push(root.left); stack.push(root.right); } else if(root.right!=null){ return false; } while(!stack.empty()){ if(stack.size()%2!=0) return false; right = stack.pop(); left = stack.pop(); if(right.val!=left.val) return false; if(left.left!=null){ if(right.right==null) return false; stack.push(left.left); stack.push(right.right); } else if(right.right!=null){ return false; } if(left.right!=null){ if(right.left==null) return false; stack.push(left.right); stack.push(right.left); } else if(right.left!=null){ return false; } } return true;}
阅读全文
0 0
- [leetcode]解决Symmetric Tree的一点小心得
- [leetcode]解决Same Tree的一点小心得
- [leetcode]解决Majority Element的一点小心得
- [leetcode]解决Clone Graph的一点小心得
- [leetcode]解决Minimum Height Trees的一点小心得
- [leetcode]解决Assign Cookies的一点小心得
- [leetcode]解决Move Zeroes的一点小心得
- [leetcode]解决Maximum Subarray的一点小心得
- [leetcode]解决Climbing Stairs的一点小心得
- [leetcode]解决House Robber的一点小心得
- [leetcode]解决Kth Largest Element in an Array的一点小心得
- OOA的一点小心得!
- github的一点小心得
- 使用开发工具的一点小心得
- 使用__doPostBack函数的一点小心得
- 调试VC++程序的一点小心得
- 关于系统设计的一点小心得
- 关于js的一点小心得
- ffmpeg源码分析2
- 重启大法好
- Contest4:Problem B: Mirror Expression
- 实现strcpy得分点
- 删除文件中特定字符串
- [leetcode]解决Symmetric Tree的一点小心得
- Apache的配置详解,最好的Apache配置文档
- 文章标题
- Android相机开发实战
- construct2——小白入门
- 1038. 统计同成绩学生(20)
- SolrCloud集群的搭建
- 160个CrackMe之41
- RNN与LSTM介绍