题目:
输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
二叉树的结点定义:
struct BinaryTreeNode{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
树的结构体
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
代码实现:利用递归
public static int treeDepth(TreeNode pRoot){
if(pRoot == null){
return 0;
}
int nLeft = treeDepth(pRoot.left);
int nRight = treeDepth(pRoot.right);
return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1);
}
题目:
输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如,下图中的二叉树就是一棵