题目描述

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

输入

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

输出

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

样例输入复制

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. WDA学习(23):UI Element:Radio Button Group & CheckBox Group使用

    1.16 UI Element:Radio Button & CheckBox使用 本实例测试Radio Button Group,CheckBox Group等的使用. 注:Dropdown ...

  2. react native android9 axios network error

    react native 发布成apk后网络请求会报 network error 是因为android9以后http协议不能用,要用htts协议.需要改成配置能兼容http协议,修改信息如下: and ...

  3. 2022-3-18内部群每日三题-清辉PMP

    1.在评估项目活动现状的会议中,团队发现存在一些影响可交付成果的风险.项目经理应该怎么做? A.跟踪已发现的风险,识别和分析新风险,并评估整个项目的风险过程有效性 B.记录风险管理信息用于经验教训 C ...

  4. git reset 加不加 --hard的区别

    通常我们提交代码一般都是 git add ,git commit -m,   git push的这么个流程.添加到暂存区,提交到git库生成版本号,push到远程仓库以供他人可以使用.这是一个完整的且 ...

  5. [2013年NOIP提高组] 积木大赛

    春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木 ...

  6. ssh 解决远程桌面端口问题

    昨天做好今天编辑 先上图  后编辑 需求:因操作失误光猫nat只剩一个可访问命令行的7000端口 前提:7000端口映射内网的22端口,可以登录ssh 解决思路:先vnc安装, gui界面安装 , 然 ...

  7. Mysql修改字段类型修改

    Mysql修改字段类型与长度修改等 alter table news modify column title varchar(130); alter table 表名 modify column 字段 ...

  8. 各种相机以及图片-SLAM14CP5

    --2020.10.20 开始学习SLAM.想着从SLAM开始然后做三维重建.前面的李群李代数以及旋转四元数有点复杂.都看过了一遍.但不太理解就先放放.希望接下去能够顺利进行.数学基础可能不是很好,公 ...

  9. 前端vue框架上手记录

    ---恢复内容开始--- Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-se ...

  10. js 导出json文件

    var data={}//处理得到的json字符串 var filename = 'json.json'//json文件名 if(typeof data === 'object'){ ddd = JS ...