1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
CSDN专家-赖老师(软件之家) 2021-11-15 22:22最佳回答 专家已采纳参考:
#include<iostream> #include<stdlib.h> #include<deque> //插入标准库中的头文件 using namespace std; typedef struct treenode { char data; treenode *right; treenode *left; }*Node; //创建二叉树 void creat_tree(treenode *&rt) { char ch; ch = getchar(); if ('#' == ch) { rt = NULL; } else { rt = new treenode; rt->data = ch; creat_tree(rt->left); //构造左子树 creat_tree(rt->right); //构造右子树 } } //层次遍历 void Complete_binary_tree(treenode *&root,int &height,int &width) { //在这里采用层次遍历的方法 if (root == NULL) { //空树满足条件 height = 0; width = 0; } int max = -1; height = 0; width = 0; Node last = root; deque <Node> c; //定义一个空的队列 c.push_back(root); while (!c.empty()) { //如果队列不为空 Node temp = c.front(); //返回队列的第一个元素 width++; //宽度加1 if (temp) { //如果是非空结点 cout << temp->data << " "; c.pop_front(); //出队列 if (temp->left) { c.push_back(temp->left); //左孩子 } if (temp->right) { c.push_back(temp->right); //右孩子 } if (temp == last ) { //访问到最右边的非空节点 if (!c.empty()) { last = c.back(); //重新赋值 } height++; //高度加1 //接下来判断宽度 if (width >= max) { max = width; width = 0; //重新计数 } } } } width = max; } int main() { treenode *root = NULL; int height, width; //表示高度和最大宽度 cout << "请输入二叉树,空值以#代表:" << endl; creat_tree(root); //创建二叉树 Complete_binary_tree(root,height,width); cout << "高度为:" << height << endl; cout<<"最大宽度为:" << width << endl; system("pause"); return 0; }
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
报告相同问题?
提交
相关推荐 更多相似问题
- 2021-11-15 18:49回答 1 已采纳 参考: #include<iostream> #include<stdlib.h> #include<deque> //插入标准库中的头文件 using nam
- 2018-09-09 10:59回答 1 已采纳 C语言要求先定义后使用,所以要把函数的定义和结构体的定义放在前面。 不考虑程序本身的对错,可以编译运行的修改如下: ``` #include #include #define
- 2021-12-06 10:51回答 1 已采纳 仅供参考: #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <mall
- 2015-12-08 22:30钟眞龙的博客 /*之前因为一直自己在想怎么构建二叉树,耽搁了继续去求二叉树的宽度;下面我想谈谈我自己关于怎么去求二叉树的最大宽度的想法 我非常肯定一些大神用各种简单的代码求二叉树的宽度,但是自己想出来的也是挺好的,...
- 2022-02-16 19:14呦,又写BUG呢的博客 1.基于二叉链表的二叉树的遍历 2.基于二叉链表的二叉树高度的计算 3.基于二叉链表的二叉树结点个数的统计 4.基于二叉链表的二叉树左右孩子的交换 5.二叉排序树的判定 6.基于二叉链表的二叉树最大宽度的计算
- 2008-11-11 09:34本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...
- 2015-01-18 04:19回答 1 已采纳 ``` struct node { int l,r; }; struct node tree[100]; int path[100]; int ans; void i
- 2021-09-08 07:55回答 1 已采纳 5
- 2022-05-20 17:20回答 2 已采纳 #include<iostream> using namespace std; struct BTree { char data; BTree *lchild, *rch
- 2021-06-09 23:18zhangzhangkeji的博客 内容来自课本例题。通过总结,学会得更深入一点,才便于记忆。...这也是函数该函数的编程思想,空节点深度为0,无子节点的节点深度为1。 查找二叉树里某一节点,函数findNode,返回指向该节点的指针。递归思
- 2022-05-03 17:28不会就用洛必达的博客 本文为王道数据结构的第五章——树与二叉树的编程题。 运行软件:vscode 使用c++文件编写 本文所使用的树为《王道——数据结构——树与二叉树(1)》中建立的树 一、5.2节 5、已知一棵二叉树按顺序存储结构进行存储...
- 2022-04-03 10:15Yulki的博客 输出格式 %8.1f 8指的是所占宽度,1指的是小数点后的位数 数组声明的最外层一维可以不指定本维元素个数 C语言字符串结束标志是\0(ASCII码是0) #define语句没有分号 strcmp是按照字典顺序比较两个字符串 ...
- 2022-05-12 22:23回答 1 已采纳 稍等,给你写一个
- 2021-06-27 18:26回答 1 已采纳 先建立结构体: #ifndef _NODE_ #define _NODE_ #include<string> using namespace std; class Node { pu
- 2022-05-08 02:18回答 1 已采纳 经过学习,我已经修改成功,修改后代码如下 #include<iostream> using namespace std; const int Maxsize = 100; template
- 2020-11-21 20:33锦恢的博客 文章目录前言创建二叉树展示...二叉树可以说是树形数据结构中最基础的,且在多种领域都有应用(比如语法树,二值决策树),熟悉其各种操作是必须的。本文通过实现几个基本的函数来实现一个基本的二叉树: #include <
- 2021-07-05 08:45英雄哪里出来的博客 本文已收录于专栏 《画解数据结构》 饭不食,水不饮,题必须刷 C语言免费动漫教程,和我一起打卡! 《光天化日学C语言》 LeetCode 太难?先看简单题! 《C语言入门100例》 数据结构难?不存在的! 《画解数据结构》 ...
- 2021-09-08 10:44追寻远方的人的博客 C++数据结构与算法 c++基础 1. 输入输出 //头文件和main函数 #include <iostream> //使用输入输出函数 using namespace std; //命名空间 int main(){ //cin int i; cin >> i;//不需要指定输入类型的 ...
- 2021-12-22 21:47回答 1 已采纳 无规律的数据指的是什么样的数据?A B C D还是能够建二叉树的啊字母A 都能成为根节点。你是想判断满二叉树,平衡二叉树,完全二叉树吧?
- 2022-05-03 18:19不会就用洛必达的博客 本文为王道数据结构的第五章——树与二叉树的编程题。 运行软件:vscode 使用c++文件编写 本文所使用的树为《王道——数据结构——树与二叉树(1)》中建立的树 一、5.3节 11、已知二叉树以二叉链表存储,编写算法...
- 没有解决我的问题, 去提问