101. Symmetric Tree
Posted sysu_kww
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了101. Symmetric Tree相关的知识,希望对你有一定的参考价值。
题目如下:
由于对树相关的程序题比较少接触,这一题是直接参考别人答案的,链接如下:
https://blog.csdn.net/crazy1235/article/details/51541984
参考了里头双端队列的实现方法,主要思路是定义两个分别遍历root节点左右子树的节点preNode以及postNode,其中postNode访问preNode的镜面位置,如果值相同就分别节点下的子节点也按镜面的方式分别压进去双端队列的两端,如果不相等,就说明不是对称树。
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public boolean isSymmetric(TreeNode root) { 12 if(root == null){ 13 return true; 14 } 15 16 Deque<TreeNode> deque = new LinkedList<TreeNode>(); 17 deque.addFirst(root.left); 18 deque.addLast(root.right); 19 20 TreeNode preNode = null; 21 TreeNode postNode = null; 22 23 while(!deque.isEmpty()){ 24 preNode = deque.pollFirst(); 25 postNode = deque.pollLast(); 26 27 if(preNode == null && postNode == null){ 28 continue; 29 } 30 31 if(preNode == null || postNode == null){ 32 return false; 33 } 34 35 if(preNode.val != postNode.val ){ 36 return false; 37 }else{ 38 deque.addFirst(preNode.right); 39 deque.addFirst(preNode.left); 40 41 deque.addLast(postNode.left); 42 deque.addLast(postNode.right); 43 } 44 } 45 46 return true; 47 } 48 }
END
以上是关于101. Symmetric Tree的主要内容,如果未能解决你的问题,请参考以下文章