<强> 1。题目描述
强>
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
<强> 2。解题思路强>
可以按照类似层次遍历,来判断是否是堆成二叉树:
首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同,以及左子树的右子树和右子树的左子树相同即可,然后采用递归一直判断下去。
<强> 3。代码强>
公开课isSymmetrical { 公共静态void main (String [] args) {//新建一棵二叉搜索树 TreeNode根=new TreeNode (10); TreeNode n1=new TreeNode (5); TreeNode n2=new TreeNode (5); TreeNode n3=new TreeNode (4); TreeNode陶瓷=new TreeNode (7); TreeNode它们=new TreeNode (7); TreeNode n6=new TreeNode (4);//TreeNode n7=new TreeNode (19); root.left=n1; root.right=n2; n1.left=n3; n1.right=陶瓷; n2.left=它们; n2.right=n6;//n6.right=n7; System.out.println(“后序遍历:”); postOrderTraverse(根); 布尔temp=对称(根); System.out.println (“\ n”+“结果:”+临时); } 静态布尔对称(TreeNode pRoot) { 如果(pRoot==null) { 返回true; } 返回comRoot (pRoot。离开,pRoot.right); } 静态布尔comRoot (TreeNode左,TreeNode右){ 如果(左==null) 返回正确的==零; 如果(右==null) 返回错误; 如果(左)。瓦尔!=right.val) 返回错误; 返回comRoot(离开了。对,right.left),,comRoot(左。离开,right.right); }//后序遍历 公共静态孔隙postOrderTraverse (TreeNode节点){ 如果(节点==null) 返回; postOrderTraverse (node.left); postOrderTraverse (node.right); System.out.print(节点。val + " "); } } >之前运行:
后序遍历:
引用>
4 7 5 7 4 5 10
结果:真
到此这篇关于java对称二叉树的判断的文章就介绍到这了,更多相关java对称二叉树内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
java对称二叉树的判断