二叉树的创建:https://blog.csdn.net/Amanda_wr/article/details/100930431
1.求二叉树节点个数:
private static int count=0
public static void getSize(Node root) {
if(root==null) {
return;
}
count++;
getSize(root.left);
getSize(root.right);
}
public static int getSize2(Node root) {
if(root==null) {
return 0;
}
int left=getSize2(root.left);
int right=getSize2(root.right);
return left+right+1;
}
2.求二叉树叶子节点个数
public static int getLeafSize(Node root) {
if(root==null) {
return 0;
}
if(root.left==null&&root.right==null) {
return 1;
}
int left=getLeafSize(root.left);
int right=getLeafSize(root.right);
return left+right;
}
3.求二叉树深度
public static int getHeight(Node root) {
if(root==null) {
return 0;
}
int left =getHeight(root.left);
int right=getHeight(root.right);
return Math.max(left,right)+1;
}
4.查找val所在的节点,若没找到,返回null;找到则返回该节点的引用
public static Node find(Node root,int val) {
if(root==null) {
return null;
}
if(root.val==val) {
return root;
}
Node n=find(root.left, val);
if(n!=null) {
return n;
}
n=find(root.right, val);
if(n!=null) {
return n;
}
return null;
}
5.判断是否是相同的二叉树
public static boolean isSameTree(Node p,Node q) {
if(p==null&&q==null) {
return true;
}
if(p==null||q==null) {
return false;
}
return p.val==q.val&&isSameTree(p.left, q.left)&&isSameTree(p.right,q.right);
}
6.判断两个二叉树是否是镜像的
public boolean isMirrorTree(Node p,Node q) {
if(p==null&&q==null) {
return true;
}
if(p==null||q==null) {
return false;
}
return p.val==q.val&&isMirrorTree(p.left, q.left)&&isMirrorTree(p.right, q.right);
}
6.给定两个二叉树,判断其中一个是否是另一个的子树
public static boolean isSubTree(Node p,Node q) {
if(p==null) {
return false;
}
if(isSameTree(p, q)) {
return true;
}
if(isSubTree(p.left, q)) {
return true;
}
if(isSubTree(p.right,q)) {
return true;
}
return false;
}
7.判断是否是平衡二叉树
public static boolean isBalanced(Node root) {
if(root==null) {
return true;
}
if(!isBalanced(root.left)) {
return false;
}
if(!isBalanced(root.right)) {
return false;
}
int left=getHeight(root.left);
int right=getHeight(root.right);
if(right-left>=-1&&right-left<=1) {
return true;
}
return false;
}