本文共 650 字,大约阅读时间需要 2 分钟。
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。
int DepthOfTree(BiTreeNode* root){ if(NULL == root) { return 0; } return max(DepthOfTree(root->leftChild), DepthOfTree(root->rightChild))+1;}
也可以采用下面的思路:
类似于递归的先序遍历,层层向下计算,每向下计算一层,深度
就加1,CalTreeDepth(PNode pn, unsigned n)中的第二个 参数表示上一层的深度,所以程序在调用时, 假设proot为整个 树的根节点,则其深度depth为: unsigned depth = CalTreeDepth(proot, 0); */ 代码如下:unsigned CalTreeDepth(PNode pn, unsigned n){ static unsigned d = 0; //使用static变量d来记录出现的最大深度 if(pn) { if(n+1 > d) d = n+1; CalTreeDepth(pn->left, n+1); CalTreeDepth(pn->right, n+1); } return d;}
转载地址:http://ttoel.baihongyu.com/