Symmetric Tree(中心对称树)

编程入门 行业动态 更新时间:2024-10-26 17:30:25

Symmetric Tree(中心<a href=https://www.elefans.com/category/jswz/34/1763015.html style=对称树)"/>

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
基本思路:

根据例子我们发现,每一层,给定两个指针分别从左端和右端开始,只有当左端的左子树的值等于右端的右子树的值,并且左端的右子树的值等于右端左子树的值时,此树便称为中心对称树(Symmetric Tree)。

	public boolean isSymmetric(TreeNode root){if(root==null)return true;ArrayList<TreeNode> list = new ArrayList<TreeNode>();list.add(root);boolean isFirst = true;while(list.size()>0){if(list.size()%2==1&&isFirst==false)return false;for(int i = 0,j=list.size()-1;i<=j;i++,j--){TreeNode one = list.get(i);TreeNode two = list.get(j);if(one.left!=null&&two.right!=null){if(one.left.val!=two.right.val)return false;}if(one.right!=null&&two.left!=null){if(one.right.val!=two.left.val)return false;}if((one.left==null&&two.right!=null)||(one.left!=null&&two.right==null))return false;}//加入下一层节点int size = list.size();while(size>0){if(list.get(0).left!=null)list.add(list.get(0).left);if(list.get(0).right!=null)list.add(list.get(0).right);list.remove(0);size--;}isFirst = false;//表示不是第一层了}return true;}



更多推荐

Symmetric Tree(中心对称树)

本文发布于:2024-02-12 03:26:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1685616.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对称   中心   Symmetric   Tree

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!