LeetCode-101.Symmetric Tree
来源:互联网 发布:中国 种族歧视 知乎 编辑:程序博客网 时间:2024/06/07 00:01
https://leetcode.com/problems/symmetric-tree/
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
非递归解:
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */public class Solution { public bool IsSymmetric(TreeNode root) { if (root == null) return true; Queue<TreeNode> q = new Queue<TreeNode>(); if (!isEqual(root, root, q)) return false; TreeNode node1,node2; int n; while ((n=q.Count)>0) { for (int i = 0; i < n; i+=2) { node1 = q.Dequeue(); node2 = q.Dequeue(); if (!isEqual(node1, node2, q)) return false; if (!isEqual(node2, node1, q)) return false; } } return true; } private bool isEqual(TreeNode node1, TreeNode node2,Queue<TreeNode> q) { if (node1.left != null && node2.right != null) { if (node1.left.val != node2.right.val) return false; q.Enqueue(node1.left); q.Enqueue(node2.right); return true; } else if (node1.left == null && node2.right == null) return true; else return false; }}
递归解:
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */public class Solution { public bool IsSymmetric(TreeNode root) { if (root == null) return true; return Func(root.left, root.right); } private bool Func(TreeNode node1, TreeNode node2) { if (node1 == null && node2 == null) return true; else if (node1 == null || node2 == null) return false; else { if (node1.val != node2.val) return false; return Func(node1.left, node2.right) && Func(node2.left, node1.right); } }}
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
- LeetCode : 101. Symmetric Tree
- [leetcode]101.Symmetric Tree
- Leetcode 101. Symmetric Tree
- 101. Symmetric Tree LeetCode
- [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
- 菜鸟成长记-初探Swift
- linux 下问题处理
- Android学习笔记三十一:Java异常处理中try,catch,finally的各种组合用法
- js基础和数据操作
- Eclipse 混淆打包
- LeetCode-101.Symmetric Tree
- MFC+OSG创建场景编辑器,运行时会经常弹出错误
- 语音及音频相关
- autoinstall ISO build
- 蘑菇街购物车动态添加
- centos上安装 oracle jdk7
- Android studio如何将项目生成doc文档
- 【PAT】 Deepest Root (DFS)
- redis数据类型(四)集合类型