树结构体定义
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
先给出求树深度的代码
int TreeDeep(BiTree T)
{
int deep = 0;
int leftdeep = 0;
int rightdeep = 0;
if(T)
{
leftdeep = TreeDeep(T->lchild);
rightdeep = TreeDeep(T->rchild);
deep = leftdeep>=rightdeep ? leftdeep+1 : rightdeep+1;
}
return deep;
}
接下来进行解释
我们可以从根节点即左右子树来理解二叉树的深度。对于任意一棵非空二叉树,有如下四种情况:
-
如果一颗树只有一个节点,它的深度是1;
-
如果根节点只有左子树而没有右子树,那么二叉树的深度应该是其左子树的深度加1;
-
如果根节点只有右子树而没有左子树,那么二叉树的深度应该是其右树的深度加1;
-
如果根节点既有左子树又有右子树,那么二叉树的深度应该是其左右子树的深度较大值加1;
关于递归
关于递归,我们不应该关心这个递归有多深,它是怎么样进行的,我们应该关心的是我们需要递归后的结果是什么,而不是关注递归本身