云主机重装系统后网站重新部署吗,建设一个网站的设备,网站有二维码吗,嵌入式开发前景对称二叉树
即先判断根节点的左右子树相不相同#xff0c;相同时#xff0c;再判断左孩子的左子树和右孩子的右子树比较#xff0c;左孩子的右子树和右孩子的左子树#xff08;当两个都相同时才是对称的#xff09;.....依次递推#xff0c;过程中并设置一些不满足相同的… 对称二叉树
即先判断根节点的左右子树相不相同相同时再判断左孩子的左子树和右孩子的右子树比较左孩子的右子树和右孩子的左子树当两个都相同时才是对称的.....依次递推过程中并设置一些不满足相同的条件。 算法代码
class Solution {public boolean isSymmetric(TreeNode root) {if(root null) return true; //由于此题至少有一个根节点可写可不写return isSymmetricChild(root.left,root.right);}public static boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){if(leftTreenull rightTreenull) return true; //两个都为空if(leftTree!null rightTreenull || leftTreenull rightTree!null) return false; //一个为空一个不为空if(leftTree.val ! rightTree.val) return false; //值不相同/*boolean left isduicheng(leftTree.left,rightTree.right);boolean right isduicheng(leftTree.right,rightTree.left);return leftright;*/return isSymmetricChild(leftTree.left,rightTree.right) isSymmetricChild(leftTree.right,rightTree.left);//和上面注释的作用一样}
} 平衡二叉树
平衡二叉树的定义一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。
该题的实质还是求树的高度只要你会写求树的高度的函数代码那基本上就没问题了由于我们在求树的高度的时候是从最下面往上不断的返回当前子树的左右子树高度的最大值1最终得到根节点的高度也就是该树的高度。那么我们可以对求数的高度的函数进行一些改变当每次求得当前子根节点的左右子树的高度时进行绝对值求差值差值小于等于1则说明当前子根是平衡的接着遍历。若差值大于1说明当前子根已经不平衡了就不用在往下遍历了可节省一定的时间消耗。 算法代码
class Solution {public boolean isBalanced(TreeNode root) {if(getHeight(root)-1) return false;return true;}public static int getHeight(TreeNode root){ //求树的高度的函数if(root null) return 0;int leftHeight getHeight(root.left);int rightHeight getHeight(root.right);if(leftHeight0 || rightHeight0) return -1; if(Math.abs(leftHeight-rightHeight)1) return -1; //说明树不平衡了return leftHeightrightHeight?leftHeight1:rightHeight1; //返回当前根的最大深度即高度}
}