小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:二叉树
数据结构类算法总结:二叉树
1.题目描述:
请实现一个函数,用来判断一颗二叉树是不是对称的。 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
2.代码实现:
public class Solution28 { private static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public static void main(String[] args) { Solution28 s = new Solution28(); TreeNode t1 = new TreeNode(8); TreeNode t2 = new TreeNode(6); TreeNode t3 = new TreeNode(6); TreeNode t4 = new TreeNode(5); TreeNode t5 = new TreeNode(7); TreeNode t6 = new TreeNode(7); TreeNode t7 = new TreeNode(5); t1.left = t2; t1.right = t3; t2.left = t4; t2.right = t5; t3.left = t6; t3.right = t7; boolean t = s.isSymmetrical(t1); System.out.println(t); } //对称前序遍历算法 public boolean isSymmetrical(TreeNode root){ return isSymmetrical(root,root); } public boolean isSymmetrical(TreeNode root1,TreeNode root2){ if(root1 == null && root2 == null) return true; if(root1 == null && root2 == null) return false; if(root1.val != root2.val) return false; return isSymmetrical(root1.left,root2.right)&& isSymmetrical(root1.right,root2.left); } }