劍指offer:對稱的二叉樹(java)
阿新 • • 發佈:2018-12-10
/** * 題目: * 請實現一個函式,用來判斷一顆二叉樹是不是對稱的。 * 注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。 * */ public class P159_IsSymmerical { boolean isSymmetrical(TreeNode pRoot) { if (pRoot == null) { return true; } return Symmerical(pRoot.left, pRoot.right); } public boolean Symmerical(TreeNode left, TreeNode right) { if (left == null && right == null) { return true; } if (left != null && right == null || left == null && right != null) { return false; } return left.val == right.val && Symmerical(left.left, right.right) && Symmerical(left.right, right.left); } public static void main(String[] args) { TreeNode node1 = new TreeNode(8); TreeNode node2 = new TreeNode(6); node1.left = node2; TreeNode node3 = new TreeNode(6); node1.right = node3; TreeNode node4 = new TreeNode(5); node2.left = node4; TreeNode node5 = new TreeNode(7); node2.right = node5; TreeNode node6 = new TreeNode(7); node3.left = node6; TreeNode node7 = new TreeNode(5); node3.right = node7; P159_IsSymmerical test = new P159_IsSymmerical(); boolean result = test.isSymmetrical(node1); System.out.print(result); } }