题目描述

利用先序递归遍历算法创建二叉树计算该二叉树中的空链域个数

输入

输入为接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树)。

输出

输出该用例对应的二叉树中的空链域个数。

样例输入复制

AB##C##
ABCD###EF##G###

样例输出复制

4
8
要点:二叉树中空链域个数
对一个二叉树来说,含有n个结点的二叉链表中有n+1个空链域
每一个节点有左右两个指针,n个节点共有2n个链域,
而n个节点只需用n-1个指针就可互连(因为连接n个点只需n-1条直线),
所以还剩下2n-(n-1)=n+1个
所以只需要遍历计算出二叉树的结点数再+1即可
void Area(Tree *&tree)
{
if(tree!=NULL)
{
count++;
if(tree->lchild!=NULL)
Area(tree->lchild);
if(tree->rchild!=NULL)
Area(tree->rchild);
}
}
或者
void CreateTree(Tree *&t)
{
char army;
cin>>army;
if(army=='#')
{
t=NULL;
}
else
{
k++;//直接统计输入的不为NULL的结点数
t=new Tree;
t->bts=army;
CreateTree(t->lchild);
CreateTree(t->rchild);
}
}

完整代码:

#include<iostream>
#include<malloc.h>
int count=0;
using namespace std;
typedef struct node
{
char data;
struct node *lchild,*rchild;
}Tree;
void CreateTree(Tree *&tree)
{
char ch;
cin>>ch;
if(ch=='#')
tree=NULL;
else
{
tree=(Tree*)malloc(sizeof(Tree));
tree->data=ch;
CreateTree(tree->lchild);
CreateTree(tree->rchild);
}
}
void Area(Tree *&tree)
{
if(tree!=NULL)
{
count++;
if(tree->lchild!=NULL)
Area(tree->lchild);
if(tree->rchild!=NULL)
Area(tree->rchild);
}
}
int main()
{
Tree *tree;
CreateTree(tree);
Area(tree);
cout<<count+1;
return 0;
}
 

Swust OJ977: 统计利用先序遍历创建的二叉树中的空链域个数的更多相关文章

  1. 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言

    #include "stdio.h" #include "string.h" #include "malloc.h" #define NUL ...

  2. LeetCode---105. 从前序与中序遍历序列构造二叉树 (Medium)

    题目:105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7 ...

  3. 【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcod ...

  4. lintcode :前序遍历和中序遍历树构造二叉树

    解题 前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \ 1 3 注意 你可以假设树中不存 ...

  5. lintcode: 中序遍历和后序遍历树构造二叉树

    题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 /  \ 1    3 注意 你可 ...

  6. 【2】【leetcode-105,106】 从前序与中序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树

    105. 从前序与中序遍历序列构造二叉树 (没思路,典型记住思路好做) 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [ ...

  7. LeetCode(105):从前序与中序遍历序列构造二叉树

    Medium! 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inor ...

  8. [PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5 ...

  9. leetcode 105 106 从前序与中序遍历序列构造二叉树 从中序与后序遍历序列构造二叉树

    题目: 105 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...

  10. LintCode-72.中序遍历和后序遍历树构造二叉树

    中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: ...

随机推荐

  1. ASP.NET Core中使用日志组件NLog

    上一篇文章描述了如何在ASP.NET Core中使用Log4Net记录日志.本篇将使用另外一个组件NLog在ASP.NET Core中记录日志. 1.引入程序集 NLog.Web.AspNetCore ...

  2. JS数组的交集与差集

    有两个数组arr1,arr2 实现arr2中去除arr1相同的元素 e.g arr1=[1,2,3] arr2=[2,3,4] ===> result = [4] 实现 获取两个数组(arr1, ...

  3. 鼠标JS

    1.鼠标按住拖动 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  4. Oracle数据库简单常用语句

    简单常用语句: 登录超级用户 sqlplus / as sysdba; 登录普通用户 connect username/password; 显示当前用户名 show user; 查询所有用户名 sel ...

  5. docker部署服务器

    Docker部署PostGres docker run -d --name postgres --restart always -e POSTGRES_USER='postgres' -e POSTG ...

  6. zk中控考勤机默认密码登陆

    网络空间搜索: app="ZKTECO-考勤管理系统" 找到某一个考勤系统 进行弱口令登陆:admin/****** 成功! End!!!

  7. 前端入门知识点笔记本之js重定位函数

    1. call().bind().apply()的用法,改变this的指向,区别在于f.call(obj, arg1, arg2...),f.bind(obj, arg1, arg2,...)(),f ...

  8. esxi 6.7手动安装阵列卡驱动()2023-01.03

    一.登录vmware后台在兼容性列表里面查找驱动,https://www.vmware.com/resources/compatibility/search.php 二. 下载对应的驱动https:/ ...

  9. [fiddler的使用]模拟自动回复功能在模拟测试mock第三方对接系统的返回中的使用场景

    [场景描述]在许多对第三方的测试过程中,由于第三方没有测试环境或者测试环境同步开发的时候还未准备好,或者系统间联调时对方还未完成的各种情况下,我们可以通过fiddler来模拟对方的返回. [操作步骤] ...

  10. 免费Linux RDP,用来练习linux或者Python,还能做成远程桌面

        分类:资源| 阅读:1103次阅读 goorm提供了免费的Linux容器,用它来在线练习命令行是非常不错的. 它的注册非常简单:https://ide.goorm.io/ 直接用谷歌账号登录即 ...