数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。
本代码采用顺序遍历,但是数组是排好序的,所以应该可以两边向中间靠拢遍历,然后尾下标减头下标。
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int count=0;
for(int i=0;i<array.length;i++){
if(array[i]==k)
count++;
}
return count;
}
}
二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
采用递归遍历调用的方法统计二叉树的深度。
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public int TreeDepth(TreeNode root) {
if(root==null){
return 0;
}
int a = TreeDepth(root.left)+1;
int b = TreeDepth(root.right)+1;
int deep=a>b?a:b;
return deep;
}
}
平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
采用递归遍历判断的方法。
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null)
return true;
if (Math.abs(getHeight(root.left) - getHeight(root.right)) > 1)
return false;
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int getHeight(TreeNode root) {
if (root == null)
return 0;
return max(getHeight(root.left), getHeight(root.right)) + 1;
}
private int max(int a, int b) {
return (a > b) ? a : b;
}
}