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

网站被备案能建设新站seo竞价

网站被备案能建设,新站seo竞价,岐山网站建设,美食网站建设的背景和目的目录 0.写在前面 1.前序遍历 步骤详解 代码实现 2.中序遍历 步骤详解 代码实现 3.后序遍历 步骤详解 代码实现 0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则,对二叉树的每一个节点进行访问,…

目录

0.写在前面

1.前序遍历

步骤详解

代码实现

2.中序遍历

步骤详解

代码实现 

3.后序遍历

步骤详解

代码实现


0.写在前面

认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则,对二叉树的每一个节点进行访问,且每个节点只访问一次。

二叉树遍历的规则一般有四种:前序遍历、中序遍历、后序遍历和层序遍历。其中,前三种较为简单且实现方式大同小异。

        1.前序遍历:先访问根节点,再遍历左右子树;

        2.中序遍历:先遍历左子树,再访问根节点,再遍历右子树;

        3.后序遍历:先遍历左子树,再遍历右子树,再访问根节点。

简单记忆:前(根,左,右)、中(左,根,右)、后(左,右,根)。

在遍历二叉树之前,首先得拥有一棵二叉树。因为目前还没有学习如何构建二叉树,所以此处我们用最原始的办法——申请N个节点,将它们手动拼接为二叉树。

typedef int BTDataType;//二叉树节点的结构
typedef struct BTNode
{BTDataType data;struct BTNode* left;struct BTNode* right;
}BTNode;//定义一个申请新节点的函数
BTNode* BuyBTNode(BTDataType data)
{BTNode* newNode = (BTNode*)malloc(sizeof(BTNode));if (newNode == NULL){perror("malloc fail");exit(-1);}newNode->data = data;newNode->left = NULL;newNode->right = NULL;return newNode;}int main()
{//手动申请节点加连接BTNode* n1 = BuyBTNode(1);BTNode* n2 = BuyBTNode(2);BTNode* n3 = BuyBTNode(3);BTNode* n4 = BuyBTNode(4);BTNode* n5 = BuyBTNode(5);BTNode* n6 = BuyBTNode(6);n1->left = n2;n1->right = n4;n2->left = n3;n4->left = n5;n4->right = n6;return 0;
}

1.前序遍历

前序遍历:先访问根节点,再访问左子树,再访问右子树;

void PrevOrder (BTNode* root)

为了更好的理解前序遍历的规则,接下来展示一下详细步骤。

步骤详解

1.先访问根节点 (data = 1),再访问左子树; 

2.再访问左子树的根节点(data =  2),再访问左子树的左子树;

3.依旧先访问根节点(data = 3),此时 n3 节点的左右子树都为 NULL ,则不再往下递归,回到上一层;接着访问上一层的右子树;

4.因为 n2 节点的右子树为 NULL,所以继续返回上一层;访问上一层的右子树;

5.访问右子树的根节点(data = 4),再访问右子树的左子树;先左子树的根节点(data = 5),n5 节点的左右子树都为 NULL,返回上一层访问右子树(data = 6),同样 n6 节点的左右子树都为 NULL,返回上一层。

至此每个节点都访问完毕,总体的访问顺序是这样的:

按照访问顺序打印的结果应该是(空节点用 NULL 表示):

1 2 3 NULL NULL NULL 4 5 NULL NULL 6 NULL NULL 

代码实现

按照前序遍历的逻辑,前序遍历的实现肯定是离不开递归。

void PrevOrder(BTNode* root)
{if (root == NULL){ printf("NULL ");//空节点用 NULL 表示return; }printf("%d ", root->data);//前序在前PrevOrder(root->left);PrevOrder(root->right);
}

(凑合着看,有点丑陋hhhhh) 

运行程序,看结果是否与之前推理的结果一致:

int main()
{//手动申请节点加连接BTNode* n1 = BuyBTNode(1);BTNode* n2 = BuyBTNode(2);BTNode* n3 = BuyBTNode(3);BTNode* n4 = BuyBTNode(4);BTNode* n5 = BuyBTNode(5);BTNode* n6 = BuyBTNode(6);n1->left = n2;n1->right = n4;n2->left = n3;n4->left = n5;n4->right = n6;PrevOrder(n1);return 0;
}
//推理结果
1 2 3 NULL NULL NULL 4 5 NULL NULL 6 NULL NULL 

2.中序遍历

前中后序三种遍历大同小异,实现代码也几乎相同。

void InOrder(BTNode* root)

步骤详解

代码实现 

void InOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}PrevOrder(root->left);printf("%d ", root->data);//中序在中PrevOrder(root->right);
}
//推理结果
NULL 3 NULL 2 NULL 1 NULL 5 NULL 4 NULL 6 NULL

3.后序遍历

步骤详解

参考1、2。

代码实现

void PostOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}PostOrder(root->left);PostOrder(root->right);printf("%d ", root->data);//后序在后
}

http://www.yidumall.com/news/99494.html

相关文章:

  • 免费做网站报价网站建设纯免费官网
  • 网站建设的流程怎么写万网域名查询工具
  • 做网站优势郑州整站网站优化
  • 做网站需要多钱谷歌浏览器直接打开
  • 宁波网站建设设计报告江门网站定制多少钱
  • 做的网站怎样更新创建网站花钱吗
  • 江门企业网站模板建站seo诊断报告
  • 子网站怎么建设外国搜索引擎登录入口
  • 装潢设计师培训班学费seo推广小分享
  • 交互式网站和非交互式网站品牌推广活动有哪些
  • nginx wordpress rewrite杭州百度seo优化
  • 网站做好后怎么做seo外贸出口平台网站
  • 杭州做网站外包公司哪家好职业培训热门行业
  • 男女做那个什么的视频网站seo视频
  • 中国共产党两学一做网站百度云网盘免费资源
  • wordpress 代码格式化百度seo 站长工具
  • 邵阳 做网站公司福州seo公司
  • 泰安市人民政府网站网络推广一个月的收入
  • 模仿一个网站建设多少钱搜索引擎推广seo
  • 做网站之前的工作巢湖网站制作
  • 做公众号封面网站百度搜索量统计
  • 怎么做博彩网站培训网站排名
  • 国外外贸需求网站sem营销是什么意思
  • 美女做暖暖免费视频网站乐陵seo优化
  • 哪些网站可以做推广国际热点新闻
  • 做虚假网站判多少年营销外包公司
  • 三网合一网站建设方案百度账号客服
  • 邢台做网站的价格网站外链怎么发布
  • 有源代码怎么制作网站营销案例网站
  • 免费做电脑网站宁波seo快速优化