101. Symmetric Tree
来源:互联网 发布:善领dsa p57数据升级包 编辑:程序博客网 时间:2024/06/04 18:50
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.
1、如果root==null,返回true
2、如果left或者right等于null,不能访问其左右节点和val,否则会outstack,所以要先判断left或者right等不等于null
代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return helper(root.left, root.right); } public boolean helper(TreeNode left, TreeNode right) { /*if (left == null && right == null) { return true; } if (left == null || right == null) { return false; }*/ //above lines can simplify as following if (left == null || right == null) { return left == right; } if (left.val != right.val) { return false; } return helper(left.left, right.right) && helper(left.right, right.left); }}
Non-recursive(use Stack)--460ms:
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 101. Symmetric Tree
- [LeetCode]101.Symmetric Tree
- 【LeetCode】101.Symmetric Tree
- [Leetcode] 101. Symmetric Tree
- LeetCode --- 101. Symmetric Tree
- [leetcode] 101.Symmetric Tree
- 101.Symmetric Tree
- 101. Symmetric Tree
- LeetCode : 101. Symmetric Tree
- [leetcode]101.Symmetric Tree
- Leetcode 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree LeetCode
- 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- Linux系统中“动态库”和“静态库”那点事儿
- 驱动与固件的区别
- JMeter工具简单介绍
- linux下混杂设备
- 1091. Acute Stroke (30)
- 101. Symmetric Tree
- HDU 5983 Pocket Cube (简单模拟)
- Centos下rabbitmq安装配置
- 2016总结----剑未配妥,出门已是江湖。
- Tomcat7配置虚拟路径-部署多应用-自动部署
- JVM 参数详解
- 欢迎使用CSDN-markdown编辑器
- Mac平台更改MySQL的root密码
- Centos下Python生产环境配置