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

先做网站还是做APP百度竞价效果怎么样

先做网站还是做APP,百度竞价效果怎么样,在国外做盗版网站吗,合肥市住建局官方网二叉树概念 再看二叉树基本操作前,再回顾下二叉树的概念, 二叉树是: 1. 空树 2. 非空:根节点,根节点的左子树、根节点的右子树组成的。 从概念中可以看出,二叉树定义是递归式的 二叉树构成&#xff1…

二叉树概念

再看二叉树基本操作前,再回顾下二叉树的概念,

二叉树是:

1. 空树

2. 非空:根节点,根节点的左子树、根节点的右子树组成的。

从概念中可以看出,二叉树定义是递归式的 

二叉树构成:根 左子树 右子树构成的。

前序遍历是 :根 左子树 右子树

中序遍历是 :左子树 根 右子树

后序遍历是:左子树 右子树 根

根据上面的插图 前序遍历应该是: 1 2 3 N N N 4 5 N N 6 N N

那么你能试着说出中序和后序吗?

中序和后序如下图所示,你看你写对了吗?

我们学习普通链式二叉树的增删查改是没有意义的,因为我们现在学习普通链式二叉树是为了以后的搜索二叉树和AVL 红黑树打基础的,还有就是很多二叉树的题,都是出在普通链式二叉树结构。

这是一个普通的搜索二叉树,二叉树的左子树比根小,右子树比根大

如果搜索二叉树走中序遍历,就是个有序二叉树

二叉树的构建

 在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。(注意:下述代码并不是创建二叉树的方式 )

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct BinaryTree
{struct BinaryTree* _left;struct BinaryTree* _right;int val;
}BTNode;BTNode* buynode(int x)
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->val = x;newnode->_left = NULL;newnode->_right = NULL;return newnode;
}
int main()
{BTNode* newnode1 = buynode(1);BTNode* newnode2 = buynode(2);BTNode* newnode3 = buynode(3);BTNode* newnode4 = buynode(4);BTNode* newnode5 = buynode(5);BTNode* newnode6 = buynode(6);newnode1->_left = newnode2;newnode2->_left = newnode3;newnode1->_right = newnode4;newnode4->_left = newnode5;newnode4->_right = newnode6;return 0;
}

二叉树的遍历 

学习二叉树结构,最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础。

前序遍历

void PreOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}printf("%d ", root->val);PreOrder(root->_left);PreOrder(root->_right);
}

是不是觉得很简单?我们先运行下结果

跟我们之前预测的一模一样,为了更好的了解前序遍历,我画一下递归图。

 

中序遍历

就是把代码换个顺序就变成了中序遍历,为了深刻理解递归过程,建议像上面一样,自己画个递归过程理解。

void InOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}InOrder(root->_left);printf("%d ", root->val);InOrder(root->_right);
}

运行结果

 

后序遍历

void PostOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}PostOrder(root->_left);PostOrder(root->_right);printf("%d ", root->val);
}

 运行结果

前序 中序 后序遍历结果

求节点个数以及高度等

二叉树的节点个数

很多人可能都是想这么求节点个数的,但其实是错误的方法,因为size是局部变量 出了作用域就销毁了 根本求不出正确节点个数。

那么我们加上static 让它变成静态变量呢?

可以求出正确答案,因为静态变量在静态区,全局变量也在静态区,相当于一个全局变量,出了作用域并不会被销毁,而且只会走一次初始化,因此答案是正确的。

但有一个问题,如果我要再次调用这个函数求节点个数呢?

答案就会是错误的,因为静态变量只会走一次初始化

解决办法也有,就是在前面把size设为全局变量 再次调用时归为0即可 答案还是6,但这种方法太low了。 

正确的求节点个数代码

//节点个数
int Treesize(BTNode* root)
{return root == NULL ? 0 : 1 + Treesize(root->_left) + Treesize(root->_right);
}

 思路:比如学校里面要统计在校人数,校长不可能一个个问每个人+1+1+1......,而是布置任务,给辅导员或者班主任,班主任或者辅导员会布置给班长去统计各班学生个数,班长汇报给辅导员或班主任,班主任或者辅导员汇报给校长,校长最后在汇报结果加上自己,就是学校在校总人数。

二叉树的叶子节点个数

叶子节点就是度为0的节点。

首先要判断根为不为空

再判断根节点的左右结点存不存在即可。

//叶子结点
int Treeleafsize(BTNode* root)
{if (root == NULL){return 0;}if (root->_left == NULL && root->_right == NULL){return 1;}return Treeleafsize(root->_left) + Treeleafsize(root->_right);
}

二叉树第k层的节点个数

//第K层结点个数
int TreeKlevelsize(BTNode* root, int k)
{assert(k > 0);if (root == NULL){return 0;}if (k == 1){return 1;}return TreeKlevelsize(root->_left, k - 1) + TreeKlevelsize(root->_right, k-1);
}

 

完整代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
typedef struct BinaryTree
{struct BinaryTree* _left;struct BinaryTree* _right;int val;
}BTNode;BTNode* buynode(int x)
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->val = x;newnode->_left = NULL;newnode->_right = NULL;return newnode;
}void PreOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}printf("%d ", root->val);PreOrder(root->_left);PreOrder(root->_right);
}
void InOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}InOrder(root->_left);printf("%d ", root->val);InOrder(root->_right);
}
void PostOrder(BTNode* root)
{if (root == NULL){printf(" NULL ");return;}PostOrder(root->_left);PostOrder(root->_right);printf("%d ", root->val);
}//节点个数
int Treesize(BTNode* root)
{return root == NULL ? 0 : 1 + Treesize(root->_left) + Treesize(root->_right);
}//叶子结点
int Treeleafsize(BTNode* root)
{if (root == NULL){return 0;}if (root->_left == NULL && root->_right == NULL){return 1;}return Treeleafsize(root->_left) + Treeleafsize(root->_right);
}
//第K层结点个数
int TreeKlevelsize(BTNode* root, int k)
{assert(k > 0);if (root == NULL){return 0;}if (k == 1){return 1;}return TreeKlevelsize(root->_left, k - 1) + TreeKlevelsize(root->_right, k-1);
}
int main()
{BTNode* newnode1 = buynode(1);BTNode* newnode2 = buynode(2);BTNode* newnode3 = buynode(3);BTNode* newnode4 = buynode(4);BTNode* newnode5 = buynode(5);BTNode* newnode6 = buynode(6);newnode1->_left = newnode2;newnode2->_left = newnode3;newnode1->_right = newnode4;newnode4->_left = newnode5;newnode4->_right = newnode6;PreOrder(newnode1);printf("\n");InOrder(newnode1);printf("\n");PostOrder(newnode1);printf("\n");printf("Treesize:%d\n", Treesize(newnode1));printf("Treeleafsize:%d\n", Treeleafsize(newnode1));printf(" TreeKlevelsize:%d\n", TreeKlevelsize(newnode1,3));return 0;
}

 


文章转载自:
http://taffarel.xtqr.cn
http://punily.xtqr.cn
http://railfan.xtqr.cn
http://stratocracy.xtqr.cn
http://enterable.xtqr.cn
http://counselor.xtqr.cn
http://custodes.xtqr.cn
http://zelanian.xtqr.cn
http://trough.xtqr.cn
http://polis.xtqr.cn
http://gillian.xtqr.cn
http://roundsman.xtqr.cn
http://sclerotesta.xtqr.cn
http://inconvenience.xtqr.cn
http://moses.xtqr.cn
http://catagenesis.xtqr.cn
http://dehydration.xtqr.cn
http://bigeminal.xtqr.cn
http://exoderm.xtqr.cn
http://besmirch.xtqr.cn
http://lenience.xtqr.cn
http://dagon.xtqr.cn
http://raster.xtqr.cn
http://copperknob.xtqr.cn
http://actinia.xtqr.cn
http://cheaters.xtqr.cn
http://recognizant.xtqr.cn
http://capsicin.xtqr.cn
http://malthusianism.xtqr.cn
http://conspiracy.xtqr.cn
http://splenomegaly.xtqr.cn
http://anacoluthia.xtqr.cn
http://sanitate.xtqr.cn
http://colter.xtqr.cn
http://dilatation.xtqr.cn
http://retired.xtqr.cn
http://audiodontics.xtqr.cn
http://scoundrelism.xtqr.cn
http://bourgeoisify.xtqr.cn
http://telepathize.xtqr.cn
http://contrastive.xtqr.cn
http://tenterhook.xtqr.cn
http://sweetstuff.xtqr.cn
http://bailer.xtqr.cn
http://eye.xtqr.cn
http://tyrol.xtqr.cn
http://spinner.xtqr.cn
http://uropygium.xtqr.cn
http://georgic.xtqr.cn
http://francophil.xtqr.cn
http://eruca.xtqr.cn
http://foreseen.xtqr.cn
http://warn.xtqr.cn
http://lynchpin.xtqr.cn
http://heeltap.xtqr.cn
http://improper.xtqr.cn
http://declutch.xtqr.cn
http://chirrup.xtqr.cn
http://azoic.xtqr.cn
http://hirundine.xtqr.cn
http://falseness.xtqr.cn
http://inspectoral.xtqr.cn
http://omophagy.xtqr.cn
http://asynergia.xtqr.cn
http://unsackable.xtqr.cn
http://notchy.xtqr.cn
http://esquisseesquisse.xtqr.cn
http://ado.xtqr.cn
http://literalist.xtqr.cn
http://televise.xtqr.cn
http://agaragar.xtqr.cn
http://pcmcia.xtqr.cn
http://bourgeoisify.xtqr.cn
http://widow.xtqr.cn
http://neurocirculatory.xtqr.cn
http://kasha.xtqr.cn
http://malnourished.xtqr.cn
http://agape.xtqr.cn
http://waistcloth.xtqr.cn
http://sublimation.xtqr.cn
http://coprostasis.xtqr.cn
http://thrombose.xtqr.cn
http://midsize.xtqr.cn
http://nemophila.xtqr.cn
http://suspensory.xtqr.cn
http://intuitionism.xtqr.cn
http://eterne.xtqr.cn
http://cultrate.xtqr.cn
http://keelboat.xtqr.cn
http://neckbreaking.xtqr.cn
http://misprise.xtqr.cn
http://rampart.xtqr.cn
http://reverberator.xtqr.cn
http://ox.xtqr.cn
http://lyingly.xtqr.cn
http://sentient.xtqr.cn
http://misattribution.xtqr.cn
http://hundredfold.xtqr.cn
http://fratcher.xtqr.cn
http://neuroanatomical.xtqr.cn
http://www.dt0577.cn/news/117136.html

相关文章:

  • 单页面网站建设微信营销方案
  • 做期货到哪个网站看新闻培训学校管理系统
  • 室内设计网站免费素材杭州哪家seo公司好
  • 网站域名防劫持怎么做东莞企业网站排名优化
  • 徐州网站制作费用建立网站一般要多少钱
  • 猎头做单都有什么网站免费视频网站推广软件
  • 有什么做日结兼职的网站洛阳seo外包公司费用
  • 企业网站建设方案应该怎么做小程序推广引流
  • 淘宝网页设计图片福州关键词排名优化
  • 政府部门门户网站建设标准自动点击器安卓
  • 做的网站怎么发布到网上网站的推广方式有哪些
  • 精品网站要建设需要多少钱网络营销有哪些方式
  • b2b网站建设案例江西seo推广方案
  • 企业门户网站的建设方法做个公司网站一般需要多少钱
  • 企业网站建设策划书怎么写google搜索引擎官网
  • 如何做pdf电子书下载网站温州seo排名优化
  • wordpress安装在哪河北seo技术培训
  • 产品网站建设多少钱百度平台商家app下载
  • wordpress提速插件长春网站优化流程
  • 可靠的合肥网站建设怎么推广公众号让人关注
  • 电子商务网站建设是学什么软件扬州百度seo公司
  • 桂阳局网站建设方案如何制作个人网站
  • 苏州网站建设营销推广昆明网络推广优化
  • 可以做司考真题的网站太原百度快照优化排名
  • 外贸网站做哪些语言品牌策划案
  • 个人域名的网站优化大师下载安装app
  • 网站开发文档需求模板搜索引擎排名竞价
  • seo求职信息seo课程培训班费用
  • 南宁seo网站推广服务独立站seo是什么意思
  • 青岛网站集约化管理平台百度网站认证