二叉树的二叉链表存储结构的求深度算法
时间: 2023-06-03 21:07:13 浏览: 123
二叉树的二叉链表存储结构的求深度算法,可以采用递归的方式实现。具体代码如下:
```
int TreeDepth(BiTree T) {
if (T == NULL) {
return 0;
}
int left_depth = TreeDepth(T->lchild);
int right_depth = TreeDepth(T->rchild);
return left_depth > right_depth ? left_depth + 1 : right_depth + 1;
}
```
其中,BiTree是二叉树的指针类型,lchild和rchild分别表示左右孩子指针。算法的思想是:如果当前节点为空,则返回0;否则,递归求出左子树的深度和右子树的深度,然后取一个更大的数,再加1,即为当前节点的深度。
相关问题
二叉树的二叉链表存储结构的求深度非递归算法
答:可以使用栈来实现非递归算法。从根节点开始,每个节点先入栈,然后从左子树往下递归入栈,直到左子树为空。接着,出栈一个节点,判断其是否存在右子树,若存在,将右子树入栈并重复上述过程。每次出栈时记录当前深度,取最大深度即为二叉树的深度。
以二叉链表存储结构存储二叉树,求二叉树的深度
二叉树的深度可以使用递归算法求解。具体方法为:如果二叉树为空,深度为0,否则深度等于左子树深度和右子树深度的较大值加1。
代码实现如下:
```
int treeDepth(TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftDepth = treeDepth(root->left);
int rightDepth = treeDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}
```
其中,`TreeNode` 是二叉树节点结构体。
阅读全文