主要内容

  • 建立二叉链表
  • 复制二叉树
  • 计算二叉树深度
  • 统计二叉树的结点个数

建立二叉链表

在先序遍历的递归算法中,将输出语句改为输入语句即可。(可回顾“递归算法”)

需要注意的是,递归算法会遍历满二叉树中的每一个结点,所以我们必须对空结点进行判断和输入。

void CreatBiTree(BiTree &T)
{cin>>ch;                    /*按先序序列输入字符*/if(ch == '#') T = NULL;     /*输入字符为#,代表结点为空*/else{T->data = ch;        CreatBitree(T->lchild);    /*递归创建左子树*/CreatBitree(T->rchild);    /*递归创建右子树*/}
}

复制二叉树

void CopyBiTree(BiTree T, BiTree &NT)
{if(T == NULL) NT = NULL;            /*空树(空结点)就没必要复制了*/else{NT->data = T->data;CopyBiTree(T->lchild, NT->lchild);    /*递归复制左子树*/CopyBitree(T->rchild, NT->rchild);    /*递归复制右子树*/}
}

计算二叉树深度

int Depth(BiTree T)
{if(T == NULL) return 0;    /*空树深度为0*/else{int m = Depth(T->lchild);    /*递归计算左子树的深度*/int n = Depth(T->rchild);    /*递归计算右子树的深度*/int d = (m > n) ? m : n;     /*取左、右子树中更大的深度*/return d++;                  /*返回d+1,包括根结点的深度*/}
}

统计二叉树的结点个数

int CountBinode(BiTree T)
{if(T = NULL) return 0;else{int m = CountBinode(T->lchild);    /*递归计算左子树的结点个数*/int n = CountBinode(T->rchild);    /*递归计算右子树的结点个数*/return 1 + m + n;                  /*1代表根结点*/}
}

数据结构知识整理 - 建立二叉链表、复制二叉树、计算二叉树深度、统计二叉树结点数相关推荐

  1. 先序遍历的顺序建立二叉链表

  2. 3006基于二叉链表的二叉树最长路径的求解(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...

  3. 数据结构C++边学边做--二叉树的实现(二叉链表实现遍历操作)

    二叉树的实现(二叉链表实现遍历操作) 一.二叉树的遍历 二.二叉链表的数据结构定义 三.二叉链表类实现 1.类声明 2.BiTree->构造函数:Create创建二叉链表 3.~BiTree-& ...

  4. 【数据结构】基于二叉链表的二叉树结点个数的统计

    基于二叉链表的二叉树结点个数的统计 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数 ...

  5. 二叉链表的建立和遍历 完整的前,中,后和层序建立和遍历

    前序,中序.后序.层序建立二叉链表. 无论看没看懂,都值得一看

  6. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

  7. 3005-基于二叉链表的二叉树最大宽度的计算(附思路,注释,可能错误分析)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法计算该二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值). 输入 多组数据.每组数据一行,为二叉树 ...

  8. 3004基于二叉链表的二叉树的双序遍历(附题意解释)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次 ...

  9. 3009基于二叉链表的二叉树结点个数的统计(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元 ...

最新文章

  1. Nuaa Q1090
  2. Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布
  3. 如何将一键还原精灵备份文件复制出来?
  4. renderthread是什么_Android 旗舰机标配的高帧屏(120Hz),对各位 App 开发者有什么影响?...
  5. Spring教程--入门程序
  6. 实验7.2 二维数组 7-5 打印杨辉三角
  7. Introduction-to-React-JS
  8. matlab中asix off_MATLAB试卷+答案
  9. 一种HBase上Region级别的二级索引存储
  10. 【建模应用】PLS偏最小二乘回归原理与应用
  11. 蒟蒻的第一次豆瓣读书爬虫实践
  12. 第欧根尼:我崇尚简朴朴素克己的生活
  13. 字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗,Javaweb面试总结
  14. windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”。...
  15. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
  16. 阿里巴巴2015校园招聘面试大礼包
  17. 学习黑客必须要掌握的DOS命令全集
  18. 软考——成本估算和成本预算的区别和联系(论文考点)
  19. 为什么你和你喜欢的网站会感到痛苦如果“禁止跟踪”法案得到通过
  20. C语言贪吃蛇,单双人模式

热门文章

  1. glob匹配多级目录
  2. Error creating bean with name Maven项目编译错误怎么解决
  3. 传智书城项目MySQL表格_传智书城项目资源汇总 - 下载 - 搜珍网
  4. Android音乐播放器开发的MediaPlayer出现IllegalStateException
  5. Flutter基础入门
  6. Tomcat配置SSL证书实现https
  7. bum报文_解读VXLAN
  8. java 中使用excl与设置单元格格式
  9. (JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
  10. 辉仔日记之学代码第十一期——集合来开会