981 统计利用二叉树存储的森林中树的棵数

981 统计利用二叉树存储的森林中树的棵数
(左儿子,右兄弟)

http://acm.swust.edu.cn/#/problems/981/271

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}btTree;

int t=0;
btTree* creatTree(char *p)
{
btTree *bt = NULL;
char temp = p[t++];
if(temp!=’#’)
{
bt=(btTree *)malloc(sizeof(btTree));
bt->data=temp;
bt->lchild=creatTree§;
bt->rchild=creatTree§;
}
return bt;
}

int count=0;
void fun(btTree *&bt)
{
if(bt==NULL)
{
return;
}
count++;
fun(bt->rchild);//只遍历右边
}

int main()
{
btTree *bt;
char s[100];
while(~scanf("%s",s))
{
if(s[0]==‘0’)
{
return 0;
}
else
{
char *p=s;
t=0;
count=0;
bt=creatTree§;
fun(bt);
printf("%d",count);
}
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是利用二叉树存储普通树的度的代码: ```python class TreeNode: def __init__(self, val): self.val = val self.child = None self.sibling = None def create_tree(): root = TreeNode(1) node2 = TreeNode(2) node3 = TreeNode(3) node4 = TreeNode(4) node5 = TreeNode(5) node6 = TreeNode(6) node7 = TreeNode(7) root.child = node2 node2.sibling = node3 node2.child = node4 node4.sibling = node5 node3.child = node6 node6.sibling = node7 return root def get_degree(root): if root is None: return 0 degree = 0 child = root.child while child is not None: degree += 1 child = child.sibling return degree def binary_tree_degree(root): if root is None: return print("Node:", root.val, "Degree:", get_degree(root)) binary_tree_degree(root.child) binary_tree_degree(root.sibling) if __name__ == '__main__': root = create_tree() binary_tree_degree(root) ``` 上述代码中,我们定义了一个 `TreeNode` 类来表示普通树中的每个节点。在 `create_tree()` 函中,我们手动创建了一树,并将其返回根节点。接下来,我们定义了一个 `get_degree()` 函,该函用于计算普通树中一个节点的度。这个函接受一个节点作为参,并使用一个循环来遍历节点的所有子节点,并计算子节点的量。 最后,我们定义了一个 `binary_tree_degree()` 函来遍历整树,并打印每个节点的度。这个函首先打印当前节点的度,然后递归遍历当前节点的子节点和兄弟节点。 当我们运行这个程序时,它将输出以下内容: ``` Node: 1 Degree: 2 Node: 2 Degree: 2 Node: 4 Degree: 1 Node: 5 Degree: 0 Node: 3 Degree: 2 Node: 6 Degree: 1 Node: 7 Degree: 0 ``` 这表明根节点的度为 2,它有两个子节点。第一个子节点的度也为 2,它有两个子节点。第二个子节点的度为 0,它没有子节点。第二层的节点同理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值