当前位置: 首页 > news >正文

云南房产网站建设视频网站如何做引流

云南房产网站建设,视频网站如何做引流,响应式网站建设论文,广西网络干部学院官网目录 1. 二叉树的前序遍历 (中,后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中,后序类似) 这道题的意思是对二叉树进行前序遍历,把每个结点的值都存入一个数组中,并且返回这个数组。 思路&…

目录

  • 1. 二叉树的前序遍历 (中,后序类似)
  • 2. 二叉树的最大深度
  • 3. 平衡二叉树
  • 4. 二叉树遍历

1. 二叉树的前序遍历 (中,后序类似)

在这里插入图片描述

这道题的意思是对二叉树进行前序遍历,把每个结点的值都存入一个数组中,并且返回这个数组。

思路:
这题与我们平时写的二叉树前序遍历不同。需要我们自己开辟空间,但又由于二叉树结点个数未知,所以在开辟空间之前要先计算结点个数,根据结点个数开辟空间。最后再利用分治递归进行前序遍历。

代码实现如下:

注意:
(1) 结点个数的计算,数组空间的开辟;
(2) 递归时一般用子函数 _prevOrder 递归,而不是 preorderTraversal 原函数,不然会重复的开辟空间;

(3) 局部变量 i 一定要传地址,因为每一层递归函数都有一个 i ,下一层放的 i 是 i++之后的 i ,由于形参是实参的一份临时拷贝,若不传地址,就不会影响上一层函数中的 i ,就是加的不是同一个 i ;

(4) 输出型参数 returnSize ,目的是获取a数组有多大。


//前序遍历
void _prevOrder(struct TreeNode* root, int* a, int* pi)
{if (root == NULL)return;a[*pi] = root->val;(*pi)++;_prevOrder(root->left, a, pi);_prevOrder(root->right, a, pi);
}//由于不知道数组开多大的空间,所以要提前计算树的结点个数
int TreeSize(struct TreeNode* root)
{return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
}int* preorderTraversal(struct TreeNode* root, int* returnSize) {int size = TreeSize(root);//开辟数组空间int* a = (int*)malloc(sizeof(int) * size);int i = 0;_prevOrder(root, a, &i);*returnSize = size;return a;
}

2. 二叉树的最大深度

在这里插入图片描述

思路:
利用分治递归思想。若根节点为空,则深度为0;若非空,则先求左右子树的深度,我的深度 = 左右子树深度大的 + 1。

代码实现如下:

注意:
要先用两个变量记录计算好的左右子树的深度!不然运行时会超出时间限制。


int maxDepth(struct TreeNode* root) {if (root == NULL){return 0;}int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}

3. 平衡二叉树

在这里插入图片描述

平衡二叉树:是指该树所有节点的左右子树的深度相差不超过 1。

思路:
首先计算出每个节点的左右子树的深度,再计算它们的深度差是否超过1。

代码实现如下:


int maxDepth(struct TreeNode* root) {if (root == NULL){return 0;}int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}bool isBalanced(struct TreeNode* root) {if (root == NULL)return true;int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);//先检查自己满不满足,再递归检查左子树,右子树满不满足return abs(leftDepth - rightDepth) < 2&& isBalanced(root->left)&& isBalanced(root->right);
}

4. 二叉树遍历

在这里插入图片描述

思路:
首先要根据输入的字符串构建一棵二叉树,再进行中序遍历。

代码实现如下:

注意:
局部变量 i 要传地址,不然递归调用时加的不是同一个 i。


//定义结点
typedef struct TreeNode
{struct TreeNode* left;struct TreeNode* right;char val;
}TNode;//创建二叉树
TNode* CreateTree(char* a, int* pi)
{if (a[*pi] == '#'){(*pi)++;return NULL;}TNode* root = (TNode*)malloc(sizeof(TNode));if (root == NULL){perror("malloc fail!\n");exit(-1);}root->val = a[*pi];(*pi)++;root->left = CreateTree(a, pi);root->right = CreateTree(a, pi);return root;
}void InOrder(TNode* root)
{if (root == NULL)return;InOrder(root->left);printf("%c ", root->val);InOrder(root->right);
}int main() {char str[100] = { 0 };scanf("%s", str);int i = 0;//构建一棵树TNode* root = CreateTree(str, &i);InOrder(root);return 0;
}
http://www.yayakq.cn/news/186564/

相关文章:

  • 传媒公司网站建设思路个人网页设计与制作论文结束语
  • 在门户网站管理建设工作讲话做家教的正规网站
  • 酷黑网站什么是网页设计培训
  • 教务处网站建设要求企业所得税怎么缴纳
  • 深圳市罗湖网站建设租用云服务器多少钱
  • 网站升级停止访问如何做wordpress瀑布流主题怎么设置首页显示文章数量
  • 自己做的网站怎么发布win7宁波seo哪家好
  • 上海网站建设 乐云seoseo营销怎么做
  • 门户和网站的区别网红营销的优势在哪里
  • 网站团购报名怎么做魅力潍坊网页制作
  • 蓟州区建设银行官方网站dw网页设计视频教程
  • 东莞已出现病例什么是网站排名优化
  • 台州网站关键字优化十堰建设银行官方网站
  • 招商网站建设推广wordpress 经常打不开
  • 网站优化排名推荐关键词搜索指数
  • 深圳网络专科网站建设规范网站维护 建设 管理
  • vr技术对网站建设的影响网站建设语言都有什么
  • 一般一个网站从建设到运营要多久营销方案推广
  • 中国城乡建设结合部网站重庆做网络推广
  • 中天建设第四网站如乐网站
  • 怎么验证网站买卖链接网站
  • 枞阳县建设局网站丹徒网站
  • 微博网站认证 备案名称企业建站系统免费
  • 江苏省建设考试培训网网站郑州网站制作公司汉狮
  • 做网站的怎么认证微博wordpress邮件发送超时
  • 定制企业网站建设wordpress add_option内容被转义
  • 网站页面设计的网址巨耀网站建设公司
  • 电商网站建设论文wordpress 开启缓存
  • 国外做珠宝的网站有哪些哈尔滨seo关键字优化
  • 陕西省建设八大员官方网站营销型网站制作的方法