目录
一、二叉树常见的操作
1、统计二叉树的节点个数
/**
* 传入二叉树的根节点,就可以求出节点个数
* @param root
* @return
*/
public int getNode(TreeNode root){
if (root==null){
return 0;
}
//此时二叉树不为空,此时知道一个根节点root,那么根节点的左右子树的节点数就交给子函数处理
//总结点数=1(根节点root)+左子树的所有节点+右子树的所有节点
return 1+getNode(root.left)+getNode(root.right);
}
2、统计二叉树中叶子节点的个数
/**
* 传入二叉树的根节点,就可以求职叶子节点数
* @param root
* @return
*/
public int getLeafNode(TreeNode root){
if (root==null){
return 0;
}
if ((root.left==null)&&(root.right==null)){
//此时说明只有一个根节点
return 1;
}
//此时root不为空且有子树
//总叶子节点数=左子树的叶子节点数+右子树的叶子节点数
return getLeafNode(root.left)+getLeafNode(root.right);
}
3、求出第K层的节点个数(k<=树的高度)
/**
* 传入二叉树的根节点,就可以直到第k层的节点个数
* @param root
* @return
*/
public int getKNode(TreeNode root,int k){
if (root==null||k<0){
return 0;
}
if (k==1){
//k=1时就是根节点
return 1;
}
//以root为根的第k层节点个数=以root.left为根的第k-1层节点个数+以root.right为根的第k-1层节点个数
return getKNode(root.left,k-1)+getKNode(root.right,k-1);
}
4、求二叉树的高度
/**
* 传入二叉树的根节点,就可以知道树的高度
* @param root
* @return
*/
public int rootHeight(