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

做动态网站系统用什么语言seo关键词优化软件

做动态网站系统用什么语言,seo关键词优化软件,背景视频素材下载免费,贵州网站设计初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…

初识二叉树 二

  • 实现链式结构二叉树
    • 前中后序遍历
      • 遍历规则
      • 代码实现
    • 结点个数以及高度等
    • 层序遍历
    • 判断是否为完全二叉树

实现链式结构二叉树

⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址,其结构如下:

typedef int BTDataType;
// ⼆叉链
typedef struct BinaryTreeNode
{struct BinTreeNode* left; // 指向当前结点左孩⼦ struct BinTreeNode* right; // 指向当前结点右孩⼦ BTDataType val; // 当前结点值域 
}BTNode;

前中后序遍历

前中后序遍历,均用到函数的递归,因此代码量虽小,却能够帮助我们充分理解递归的思想。

遍历规则

按照规则,⼆叉树的遍历有:前序/中序/后序的递归结构遍历:
1)前序遍历(Preorder Traversal 亦称先序遍历):访问根结点的操作发⽣在遍历其左右子树之前
访问顺序为:根结点、左子树、右子树
2)中序遍历(Inorder Traversal):访问根结点的操作发⽣在遍历其左右子树之中(间)
访问顺序为:左子树、根结点、右子树
3)后序遍历(Postorder Traversal):访问根结点的操作发⽣在遍历其左右子树之后
访问顺序为:左⼦树、右⼦树、根结点

代码实现

void PreOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->val);PreOrder(root->left);PreOrder(root->right);
}
void InOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);printf("%d ", root->val);InOrder(root->right);
}
void PostOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);InOrder(root->right);printf("%d ", root->val);
}

结点个数以及高度等

// ⼆叉树结点个数 
int BinaryTreeSize(BTNode* root); 
// ⼆叉树叶⼦结点个数 
int BinaryTreeLeafSize(BTNode* root); 
// ⼆叉树第k层结点个数 
int BinaryTreeLevelKSize(BTNode* root, int k); 
//⼆叉树的深度/⾼度
int BinaryTreeDepth(BTNode* root);
// ⼆叉树查找值为x的结点 
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
// ⼆叉树销毁
void BinaryTreeDestory(BTNode** root);

层序遍历

除了先序遍历、中序遍历、后序遍历外,还可以对⼆叉树进⾏层序遍历。设⼆叉树的根结点所在层数为1,层序遍历就是从所在⼆叉树的根结点出发,⾸先访问第⼀层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,⾃上⽽下,⾃左⾄右逐层访问树的结点的过程就是层序遍历实现层序遍历需要额外借助数据结构:队列
在这里插入图片描述

// 层序遍历
void LevelOrder(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);printf("%c ", top->data);QueuePop(&q);if (top->_left) {QueuePush(&q, top->_left);}if (top->_right) {QueuePush(&q, top->_right);}}QueueDesTroy(&q);
}

判断是否为完全二叉树

// 判断⼆叉树是否是完全⼆叉树
bool BinaryTreeComplete(BTNode* root) 
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top == NULL) {break;}QueuePush(&q, top->_left);QueuePush(&q, top->_right);}while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top != NULL) {QueueDesTroy(&q);return false;}}QueueDesTroy(&q);return true;
}
```利用了队列的方法,将二叉树进行遍历,一旦在NULL后找到非空元素,说明该二叉树非完全二叉树,若全不为空,或剩下的全为空时,说明为完全二叉树,但有一点需要判断该队列是否为空。
http://www.dt0577.cn/news/31184.html

相关文章:

  • 代账行业门户网站开发百度推广关键词怎么优化
  • 怎么做网站推广线下外贸网站免费推广
  • 手机营销网站模板网站推广网络推广
  • 网站开发团队需要几个人提高工作效率的软件
  • 织梦个人博客网站源码营销案例100例小故事及感悟
  • 深圳台历制作seo搜索优化待遇
  • 深圳在哪些网站找什么好处网络营销工作内容是什么
  • 公司网站备案材料推广seo网站
  • 企业宣传网站源码快手秒赞秒评网站推广
  • 外贸可以什么网站做怎么建立一个网站
  • wordpress复制按钮长沙网络优化产品
  • 包装纸箱怎么做网站灰色词首页排名接单
  • 只做dnf的网站自媒体营销的策略和方法
  • 芜湖企业做网站广告设计公司
  • 做建材营销型网站seo快速排名优化
  • 天津有哪些互联网公司网站应该如何进行优化
  • 手机能看的网站有哪些seo文章生成器
  • 光棍天堂手机2019版免费观看长沙seo外包
  • 深圳网站定制建设百度搜索推广的定义
  • iis配置静态网站网络营销推广策划
  • 黑河网站建设百度关键词竞价查询系统
  • 网站开发工程师工资多少武汉网络推广优化
  • 网站建设是设浏览器下载安装2022最新版
  • 怎样做旅游视频网站网站如何被百度快速收录
  • 做外贸需要浏览外国网站枸橼酸西地那非片功效效及作用
  • 四川做网站找谁免费建站的网站哪个好
  • 网站后台登录地址怎么安全免费推广引流平台
  • 网站建设推广 公司宁波seo推广优化哪家强
  • 哪些行业做网站最重要某网站seo策划方案
  • 亚马逊网站特色企业如何建站