php实现求对称二叉树(先写思路,谋而后动)
php实现求对称二叉树(先写思路,谋而后动)
一、总结
1、先写思路,谋而后动
二、php实现求对称二叉树
题目描述:
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
三、代码
代码一:
1 /*思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同 //1、先写思路,谋而后动 2 * 左子树的右子树和右子树的左子树相同即可,采用递归 3 * 非递归也可,采用栈或队列存取各级子树根节点 4 */ 5 public class Solution { 6 boolean isSymmetrical(TreeNode pRoot) 7 { 8 if(pRoot == null){ 9 return true; 10 } 11 return comRoot(pRoot.left, pRoot.right); 12 } 13 private boolean comRoot(TreeNode left, TreeNode right) { 14 // TODO Auto-generated method stub 15 if(left == null) return right==null; 16 if(right == null) return false; 17 if(left.val != right.val) return false; 18 return comRoot(left.right, right.left) && comRoot(left.left, right.right); 19 } 20 }
错误代码:这个代码写的是在对称二叉树的基础上每棵树的左右子树还需要相等
1 <?php 2 3 /*class TreeNode{ 4 var $val; 5 var $left = NULL; 6 var $right = NULL; 7 function __construct($val){ 8 $this->val = $val; 9 } 10 }*/ 11 function isSymmetrical($pRoot) 12 { 13 if($pRoot==null) return false; 14 if(!$pRoot->left&&!$pRoot->right) return true; 15 if(($pRoot->left&&!$pRoot->right)||(!$pRoot->left&&$pRoot->right)) return false; 16 if($pRoot->left&&$pRoot->right){ 17 if($pRoot->left->val==$pRoot->right->val) return isSymmetrical($pRoot->left)&&isSymmetrical($pRoot->right); 18 else return false; 19 } 20 //return false; 21 }
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672