【101-Symmetric Tree(对称树)】
来源:互联网 发布:apache ddos ip 大量 编辑:程序博客网 时间:2024/05/16 09:03
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
For example, this binary tree is symmetric:
<code class="hljs tex has-numbering"> 1 / <span class="hljs-command">\</span> 2 2 / <span class="hljs-command">\ </span>/ <span class="hljs-command">\</span>3 4 4 3</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>
But the following is not:
<code class="hljs tex has-numbering"> 1 / <span class="hljs-command">\</span> 2 2 <span class="hljs-command">\ </span> <span class="hljs-command">\</span> 3 3</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>
Note:
Bonus points if you could solve it both recursively and iteratively.
题目大意
给定一棵树,判断它是否是对称的。即树的左子树是否是其右子树的镜像。
解题思路
使用递归进行求解,先判断左右子结点是否相等,不等就返回false,相等就将左子结点的左子树与右子结果的右子结点进行比较操作,同时将左子结点的左子树与右子结点的左子树进行比较,只有两个同时为真是才返回true,否则返回false。
代码实现
树结点类
<code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> TreeNode { <span class="hljs-keyword">int</span> val; TreeNode left; TreeNode right; TreeNode(<span class="hljs-keyword">int</span> x) { val = x; }}</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>
算法实现类
<code class="hljs vbscript has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> Solution { <span class="hljs-keyword">public</span> boolean isSymmetric(TreeNode root) { <span class="hljs-keyword">if</span> (root == <span class="hljs-literal">null</span>) { return <span class="hljs-literal">true</span>; } <span class="hljs-keyword">else</span> { return isSame(root.<span class="hljs-built_in">left</span>, root.<span class="hljs-built_in">right</span>); } } <span class="hljs-keyword">private</span> boolean isSame(TreeNode <span class="hljs-built_in">left</span>, TreeNode <span class="hljs-built_in">right</span>) { <span class="hljs-keyword">if</span> (<span class="hljs-built_in">left</span> == <span class="hljs-literal">null</span> && <span class="hljs-built_in">right</span> == <span class="hljs-literal">null</span>) { return <span class="hljs-literal">true</span>; } <span class="hljs-keyword">if</span> (<span class="hljs-built_in">left</span> != <span class="hljs-literal">null</span> && <span class="hljs-built_in">right</span> == <span class="hljs-literal">null</span> || <span class="hljs-built_in">left</span> == <span class="hljs-literal">null</span> && <span class="hljs-built_in">right</span> != <span class="hljs-literal">null</span>){ return <span class="hljs-literal">false</span>; } <span class="hljs-keyword">else</span> { return <span class="hljs-built_in">left</span>.val == <span class="hljs-built_in">right</span>.val && isSame(<span class="hljs-built_in">left</span>.<span class="hljs-built_in">left</span>, <span class="hljs-built_in">right</span>.<span class="hljs-built_in">right</span>) && isSame(<span class="hljs-built_in">left</span>.<span class="hljs-built_in">right</span>, <span class="hljs-built_in">right</span>.<span class="hljs-built_in">left</span>); } }}</code>
0 0
- 【101-Symmetric Tree(对称树)】
- Symmetric Tree(对称树)
- Symmetric Tree 对称树
- LeetCode 101 Symmetric Tree(对称树)(*)
- 101. Symmetric Tree 对称树 (难点!)
- Leetcode#101. Symmetric Tree(对称树)
- leetcode-Symmetric Tree 对称树
- leetcode-Symmetric Tree 对称树
- leetcode-Symmetric Tree 对称树
- Symmetric Tree 是不是对称树
- LeetCode-101-Symmetric Tree judge对称tree
- leetcode解题之101# Symmetric Tree Java版(对称树)
- 101Symmetric Tree判断对称二叉树dfs
- LeetCode-101-Symmetric Tree(判断是否为对称树)
- 017-101-Symmetric Tree 判断树是否对称
- LeetCode OJ 之 Symmetric Tree(对称树)
- [leetcode]Symmetric Tree (对称树 C语言实现)
- LeetCode 101. Symmetric Tree(对称的树)
- POJ 3348 Cows(凸包面积)
- 第26章:AdapterViewFlipper的用法
- 工具
- eclipseRCP深入浅出(学习总结)2015.08.08
- JDK容器 Vector源码剖析
- 【101-Symmetric Tree(对称树)】
- 数据库事务总结
- eclipseRCP深入浅出(学习总结)2015.08.11
- POJ 1741 Tree(树分治|ltc男人八题)
- CodeForces #315 (div1) A.Primes or Palindromes?
- SpringMVC+KindEditor在线编辑器之文件上传
- 用信号量和Posix线程操作来实现双线程高速下载
- mysql存储过程
- 《现代操作系统》精读与思考笔记 第八章 多处理机系统 第九章 安全