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

网站建设能给客户带来什么手机报价大全2021中关村

网站建设能给客户带来什么,手机报价大全2021中关村,左侧导航栏网站,wordpress 批量打印文章目录 一、单值二叉树二、相同的树三、对称二叉树四、另一棵树的子树五、二叉树遍历5.1前序遍历5.2 二叉树的构建及遍历 一、单值二叉树 (链接:UnivaluedBinaryTree) bool isUnivalTree(struct TreeNode* root) {if(root NULL)return true;if(root->left …

文章目录

  • 一、单值二叉树
  • 二、相同的树
  • 三、对称二叉树
  • 四、另一棵树的子树
  • 五、二叉树遍历
    • 5.1前序遍历
    • 5.2 二叉树的构建及遍历

一、单值二叉树

(链接:UnivaluedBinaryTree)
在这里插入图片描述在这里插入图片描述

bool isUnivalTree(struct TreeNode* root)
{if(root == NULL)return true;if(root->left != NULL && root->left->val != root->val)return false;if(root->right != NULL && root->right->val != root->val)return false;return isUnivalTree(root->left) && isUnivalTree(root->right);
}

如果一棵树是单值二叉树的话,则父子节点之间的值一定是相等的:

a == b && b == c 则推出 a == b == c

所以通过传递比较的性质就可以判断出一棵二叉树是否是单值二叉树。

二、相同的树

(链接:SameTree)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

bool isSameTree(struct TreeNode* p, struct TreeNode* q) 
{if(p==NULL && q==NULL)return true;if(p==NULL || q==NULL)return false;if(p->val != q->val)return false;return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}

两棵二叉树相同就是根相同,左右子树也相同。

三、对称二叉树

(链接:SymmetricTree)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
由于题目给定的树的是至少有一个节点的,所以根节点就不用判断是否对称啦,直接从根节点的左右子树开始判断是否对称:

bool _isSymmetric(struct TreeNode* leftRoot,struct TreeNode* rightRoot)
{if(leftRoot == NULL && rightRoot == NULL)return true;if(leftRoot == NULL || rightRoot == NULL)return false;if(leftRoot->val != rightRoot->val)return false;return _isSymmetric(leftRoot->left,rightRoot->right) && _isSymmetric(leftRoot->right,rightRoot->left);
}bool isSymmetric(struct TreeNode* root)
{return _isSymmetric(root->left,root->right);
}

四、另一棵树的子树

(链接:SubtreeOfAnotherTree)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述这道题需要借助前面做过的题:判断是否是相同的树那题来做此题。对于二叉树的每个不为空的节点都可以看作是其所在子树的根。所以我们可以通过前序遍历的方法判断root中是否包含subRoot这棵子树:

bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{if(p == NULL && q == NULL)return true;if(p == NULL || q == NULL)return false;if(p->val != q->val)return false;return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot) 
{if(root == NULL)return false;if(isSameTree(root,subRoot))return true;return isSubtree(root->left,subRoot) || isSubtree(root->right,subRoot);
}

五、二叉树遍历

5.1前序遍历

(链接:BTreePrevOrder)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

//计算二叉树节点数量
int TreeSize(struct TreeNode* root)
{if(root==NULL)return 0;return TreeSize(root->left)+TreeSize(root->right)+1;
}
//前序遍历二叉树,并将值存放进数组a中
void _preorder(struct TreeNode* root, int*a, int* pi)
{if(root == NULL)return;a[(*pi)++] = root->val;_preorder(root->left, a, pi);_preorder(root->right, a, pi);
}
//前序遍历的主调函数
int* preorderTraversal(struct TreeNode* root, int* returnSize) 
{*returnSize = TreeSize(root);int* arr = (int*)malloc((*returnSize)*sizeof(int));if(arr == NULL){exit(1);}int i = 0;//数组arr的下标_preorder(root,arr,&i);return arr;
}

这里需要注意的是preorderTraversal函数的参数中有一个returnSize参数,这个参数不是直接拿来使用的,它是用来接收计算出的二叉树的节点个数的,也叫输出型参数。为什么returnSize是一个指针呢?因为需要知道数组中的有效元素个数,所以传指针是为了让returnSize一直记录着二叉树的节点个数,方便编译器获取returnSize。试想:如果returnSize是值传递的话,则preorderTraversal函数调用完毕后,函数外边的returnSize就没有记录下数组的有效数据个数。

5.2 二叉树的构建及遍历

(链接:Practice)
在这里插入图片描述在这里插入图片描述这道题是要先通过先序序列构建出二叉树,然后再对二叉树进行中序遍历:

#include <stdio.h>
#include<stdlib.h>typedef char BTDataType;
typedef struct BinaryTreeNode 
{struct BinaryTreeNode* left; // 指向当前结点的左孩子struct BinaryTreeNode* right; // 指向当前结点的右孩子BTDataType val; // 当前结点的值域
} BTNode;BTNode* BuyBTNode(char x)
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));if (newnode == NULL){perror("malloc fail");return NULL;}newnode->val = x;newnode->left = NULL;newnode->right = NULL;return newnode;
}
//创建二叉树
BTNode* CreateTree(char* a,int* pi)
{if(a[*pi] == '#'){(*pi)++;return NULL;}BTNode* root = BuyBTNode(a[*pi]);(*pi)++;root->left = CreateTree(a,pi);root->right = CreateTree(a,pi);return root;
}
//中序遍历
void InOrder(BTNode* root)
{if(root == NULL){return;}InOrder(root->left);printf("%c ",root->val);InOrder(root->right);
}int main() 
{char arr[100];scanf("%s",arr);int i = 0;BTNode* root = CreateTree(arr,&i);InOrder(root);return 0;
}

注意i是一个全局变量,这样调用CreateTree函数时传i的地址,就能改变全局变量i。

补充:

在C语言中,函数参数可以分为两种类型:输入型参数(也称为输入参数或传入参数)和输出型参数(也称为传出参数或输出参数)。这两种参数在函数中的作用和用法略有不同。
1.输入型参数(Input Parameters)
输入型参数是在调用函数时从函数外部传递给函数的值。这些值在函数内部被读取,但在函数执行过程中不会被修改。输入型参数主要用于向函数提供必要的信息或数据,以便函数可以基于这些数据进行计算或处理。
2.输出型参数(Output Parameters)
输出型参数用于从函数返回数据到函数外部。这通常通过引用(在C语言中通过指针实现)来实现,即通过传递变量的地址给函数,函数内部可以修改这个变量的值,从而影响函数外部的变量。

🔥总结:

🍃输入型参数:在函数调用时传递给函数的值,不应在函数内部被修改。
🍃输出型参数:通过指针传递变量的地址,函数内部可以修改这个变量的值,从而影响函数外部的变量。这在需要从函数返回多个值或者需要修改外部变量时非常有用。
理解这两种参数的差异和用法对于编写高效、清晰的C语言代码至关重要。


文章转载自:

http://fsiFEhRN.fLdsb.cn
http://Ri9EeHML.fLdsb.cn
http://jpCgldyc.fLdsb.cn
http://Yy1CduzY.fLdsb.cn
http://2aKT3Zyx.fLdsb.cn
http://6cIlfV2z.fLdsb.cn
http://RSVhaam9.fLdsb.cn
http://ILZFlNAg.fLdsb.cn
http://ngH9mqtg.fLdsb.cn
http://icG6CxRE.fLdsb.cn
http://YBTyTF5b.fLdsb.cn
http://0Fq6csOz.fLdsb.cn
http://iKCBmqFc.fLdsb.cn
http://VWO0rn8p.fLdsb.cn
http://Tx3bhbAJ.fLdsb.cn
http://l9cVZtv5.fLdsb.cn
http://4ryu5AL3.fLdsb.cn
http://NKoYoYXk.fLdsb.cn
http://I93hRgek.fLdsb.cn
http://5i45Kqwf.fLdsb.cn
http://BoUOQ3Zr.fLdsb.cn
http://RMPo8HAc.fLdsb.cn
http://3fTP7cvB.fLdsb.cn
http://h7pjvBf3.fLdsb.cn
http://QxL4scxy.fLdsb.cn
http://R6f02OB1.fLdsb.cn
http://SGzRfLiF.fLdsb.cn
http://efkt0DQB.fLdsb.cn
http://2tcvGFAG.fLdsb.cn
http://Y2k6Rl5P.fLdsb.cn
http://www.dtcms.com/wzjs/717097.html

相关文章:

  • 网站所有分类中 点击箭头不出现下拉菜单做网站官网需多少钱
  • 企业网站建设经验分享我是新手如何做电商
  • 商城网站建设最好的公司制作俄语网站
  • 开什么网站暴利wordpress慢 数据库
  • 苏州网站怎么做帝国做的网站删除域名后缀
  • 民权做网站哪家好美篇在哪个网站做的
  • 重庆博建设计院公司是网站更改wordpress所有的链接
  • google网站建设合肥设计公司排名
  • 网站建设背景怎么写找外包做网站
  • 杭州建站程序杭州企业建站程序
  • 公司网站建设 入账装饰设计有限公司
  • 什么网站百度的收录高七台河新闻直播
  • 创做阿里巴巴网站流程正规做兼职的网站
  • 网站建设 业务板块名称网站后台是什么意思
  • 网站不备案能访问吗模板之家免费下载方法
  • 旅行社网站建设规划的内容wordpress需要的插件
  • 怎么找上海网站建78建筑网官网
  • 网站建设制作方案响应式潍坊网站建设
  • 网站排名seo培训哪个平台推广效果最好
  • asp手机网站源码动漫制作需要哪些软件
  • 网站主页 优帮云如何给网站添加搜索关键字
  • 建立一个公司网站大约多少钱虫点子创意设计公司
  • 设计网站流程帮别人做非法网站
  • 美食网站开发流程4网站建设哪里好点
  • 辽宁网站建设哪里好重庆做优化的网络公司
  • 网站备案是备什么中国网站开发公司排名
  • 南宁正规公众号网站建设推广网站制作的流程有哪些
  • 国际网站怎么开通用织梦做网站快吗
  • 做h5网站设计网站建设商务的术语
  • 网站建设合同 附件烟台网站建设精通臻动传媒