输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版)
package Day45; /** * @Author Zhongger * @Description 输入一棵二叉树,判断该二叉树是否是平衡二叉树 * @Date 2020.3.18 */ public class AVLSolutionClass { private boolean flag=false; public static void main(String[] args) { } public boolean IsBalanced_Solution(TreeNode root){ getDepth(root); return flag; } public int getDepth(TreeNode root){ if (root==null){ flag=true; return 0; } int leftDepth=getDepth(root.left); int rightDepth=getDepth(root.right); int depth=(leftDepth>rightDepth?leftDepth:rightDepth)+1; if (Math.abs(leftDepth-rightDepth)>1){ flag=false; }else { flag=true; } return depth; } } class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val) { this.val = val; } }
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(Java版)
package Day45; /** * @Author Zhongger * @Description 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 * @Date 2020.3.18 */ public class TreeDepthsSolutionClass { public static void main(String[] args) { TreeNode root = new TreeNode(1); TreeNode a = new TreeNode(2); TreeNode b = new TreeNode(2); TreeNode c = new TreeNode(2); TreeNode d = new TreeNode(2); root.left=a; a.left=b; b.right=c; root.right=d; //TreeNode root=null; System.out.println(new TreeDepthsSolutionClass().TreeDepth(root));//4 } public int TreeDepth(TreeNode root) { if (root==null){ return 0; } return Math.max(root.left==null?0:TreeDepth(root.left),root.right==null?0:TreeDepth(root.right))+1; } }
总结
上面两题都涉及到了二叉树求深度的问题,往往这种类型的题目需要使用递归来求解。