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

wordpress模板原创广州建站优化

wordpress模板原创,广州建站优化,买商标价格一览表,交互设计就业前景导言 前面以及有了堆的基础,现在来学习二叉树。二叉树的学习和前面的数据结构很不一样,前面我们主要学习用数据结构储存数据,以及实际手搓数据结构的增删查改;而学习二叉树主要是为我们以后学搜索二叉树以及后面的AVL树等数据结构…

导言

前面以及有了堆的基础,现在来学习二叉树。二叉树的学习和前面的数据结构很不一样,前面我们主要学习用数据结构储存数据,以及实际手搓数据结构的增删查改;而学习二叉树主要是为我们以后学搜索二叉树以及后面的AVL树等数据结构做准备,我们主要学习遍历二叉树,学一下二叉树的结构。

二叉树的遍历

二叉树由结点组成,一个父节点最多有两个子节点

相信大家基本上都在学校学习过二叉树的遍历,但是其中的具体细节不一定清楚明白。

二叉树的遍历根据访问根节点的顺序分为三种

前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树。

中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。

后序遍历:先访遍历左子树,然后遍历右子树,最后访问根节点。

前序遍历

接下来我们来手动测试一下前序遍历

前置说明

这里我们来定义一下二叉树的结构

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>typedef struct BinaryTreeNode
{int data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;

在测试的我们可以自己手搓一个二叉树测试用例出来

BTNode* BuyNode(int x)
{BTNode* node= (BTNode*)malloc(sizeof(BTNode));if (node == NULL){perror("malloc fail");return NULL;}node->data = x;node->left = NULL;node->right = NULL;
}BTNode* CreatBinaryTree()
{BTNode* b1 = BuyNode(1);BTNode* b2 = BuyNode(2);BTNode* b3 = BuyNode(3);BTNode* b4 = BuyNode(4);BTNode* b5 = BuyNode(5);BTNode* b6 = BuyNode(6);b1->left = b2;b1->right = b4;b2->left = b3;b4->left = b5;b4->right = b6;return b1;
}

这样我们就得到了一个二叉树

接下来用代码实现前序遍历,用递归实现。如果是NULL输出N并返回(注意return 不会直接结束程序,而是结束这次函数调用,如果是递归实现,可能还有很多次函数调用),否则输出data.


//前序遍历
void PrevOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}

调用关系图(逻辑图):

 栈帧开辟销毁情况:

代码运行结果

 中序遍历

遍历的顺序不同就是访问头节点的顺序不同,中序遍历就是访问左子树后才访问头节点

//中序遍历
void InOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}

我们先来看看运行结果

调用关系图(逻辑图):

 

后序遍历

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

执行结果:

调用关系图(逻辑图): 

 

http://www.hyszgw.com/news/78101.html

相关文章:

  • python做软件的网站c 网站开发 调试
  • 灌云网站制作成都品牌网站建设电话
  • 我想网上做网站网页制作颜色的代码大全
  • 如何推广一个网站免费模板网站word
  • 设计网站公司哪里好百度seo营销
  • 辛集哪做网站重庆教育集团建设公司网站
  • 去马来西亚做网站网站贵阳网站建设制作
  • 销售网站建设推广湖南平台网站建设企业
  • 网站建设专业性的评价内容营销型网站开发推荐
  • 网站广告图片在线制作公司小网站怎么做
  • 做dota2菠菜网站wordpress文章如何分类添加
  • 企业网站开发建设简单网页设计模板素材
  • 做网站的组要具备哪些素质意大利新闻
  • 做招聘网站用什么代码开发昆山广告设计制作公司
  • 24小时网站建设linux代码做网站
  • 怎么做外网网站监控没有网站域名是否需要备案
  • 网站备案服务商查询wordpress 搭建
  • 学校做网站需要多少钱上海哪个区买房最好
  • 青岛开发区建设局网站四平网站建设公司
  • 重庆网站有哪些教育网站制作费用
  • 美的网站建设水平swot分析做动画 的 网站有哪些
  • 做网站做软件怎么赚钱吗重庆百度快照优化
  • 网站设计大全云南手机网站建设公司
  • iis网站模板wordpress 插件_
  • 深圳网站设计哪好有哪些好的做兼职网站有哪些
  • 黑色炫酷的监控网站html西安电商平台网站建设
  • 建站收入电商 网站 建设
  • 国外创意网站建设银行中国网站
  • 专业做胶粘剂招聘网站有趣的网站设计
  • 营销型网站建设目的和意义永州网站开发