#include<bits/stdc++.h>
using namespace std;
//一个树的节点,要有存放的数类型,然后是左右节点的指针
typedef struct Node {int date=0;Node* left=NULL, *right=NULL;
}BTNode;//创建二叉树,要求传入一个数组,和数组的长度
BTNode* createBTree(int a[],int n) {BTNode* root=NULL,*c=NULL, * pa = NULL, *p=NULL;root = new BTNode;root->date = a[0];root->left = root->right = NULL;for (int i=1; i < n;i++){//注意这个位置是从1开始p = new BTNode;p->left = p->right = NULL;p->date = a[i];c = root;while (c) {pa = c;if (c->date < p->date) c = c->right;else c = c->left;}if (pa->date < p->date)pa->right = p;else pa->left = p;}return root;
}//中序遍历
void Inorder(BTNode *root) {if (root) {Inorder(root->left);cout << root->date << " ";Inorder(root->right);}
}//前序遍历
void Forder(BTNode *root) {if (root){cout << root->date << " ";Forder(root->left);Forder(root->right);}
}//后续遍历
void Porder(BTNode *root) {if (root) {Porder(root->left);Porder(root->right);cout << root->date << " ";}
}//统计树的层数
int BTtree(BTNode *root) {int c1, c2, c;if (!root) {return 0;}else {c1 = BTtree(root->left);c2 = BTtree(root->right);c = c1 > c2 ? c1 : c2;return c + 1;}
}//查找key,返回节点的地址
BTNode* serach(BTNode *root,int key ) {if (!root)return NULL;else if (root->date == key)return root;if (root->date < key)return serach(root->right, key);else return serach(root->left,key);
}int main() {int a[] = {1,2,9,3,41,5,26,7};BTNode* root = createBTree(a,8);Inorder(root);cout << endl<< BTtree(root);cout << serach(root, 26)->date;return 0;
}

二叉树的创建和遍历(查找key,返回二叉树的层数)相关推荐

  1. C语言二叉树的创建与遍历

    二叉树的创建与遍历 文章目录 二叉树的创建与遍历 前言 一.二叉树的结构 二.二叉树创建和三种遍历 1. 2.前序遍历 3.中序遍历 4.后序遍历 5.测试代码 总结 前言 二叉树(binary tr ...

  2. 二叉树的创建和遍历-C语言实现

    二叉树的创建和遍历-C语言实现 链式存储结构 struct BinaryTreeNode {//数据char data;//左子树BinaryTreeNode *leftChild;//右子树Bina ...

  3. python二叉树的创建与遍历

    二叉树的基本概念: 一个结点的层次直观上来说就是其所在的行,其中根结点层次为1(第一行),其子结点层次为2(第二行),以此类推 二叉树的深度(高度):指的是二叉树中的最大叶子结点所在的层.二叉树的深度 ...

  4. c语言二叉树的生成,C语言实现二叉树的创建以及遍历(递归)

    C语言实现二叉树的创建以及遍历 #include typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNo ...

  5. 【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05

    二叉树 1. 二叉树简介 定义: 每一个结点的子节点数量不超过 2 二叉树的结点分为:左节点.右节点 满二叉树: 每个结点都有两个子结点的二叉树(除了叶子结点外) 完全二叉树: 除去最后一层,是一个满 ...

  6. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson-rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

  7. 二叉树的创建和遍历实现

    1 前言 提到**树(Tree)**结构,很容易联想到"大树",想到这是"一对多关系"特性的数据结构,其相关的名词.概念很多: 子树(SubTree).结点(N ...

  8. 二叉树的创建与遍历(C++)

    写在前面 一直想写一下关于二叉树的C++实现, 之前学数据结构用的是Python, 简洁直观的语法十分舒适, 但是, 当时有多舒服, 用C++写之后就有多痛苦- 指针就是个大问题, 反复研究之后总算明 ...

  9. [******] 树问题:普通二叉树的创建与遍历

    1. 二叉树的创建 String pre_str = "1,2,4,8,-1,-1,9,-1,-1,5,-1,-1,3,6,-1,10,-1,-1,7,-1,-1";//先序输入S ...

最新文章

  1. 数学大神攻克猜字游戏Wordle,求解算法成绩逼近理论极限,连信息论都用上了...
  2. Qt中另一种创建线程的方式
  3. Java类的基本运行顺序
  4. ogr 缓冲区_GDAL的几何操作
  5. 5904.刺客信条(AC)
  6. Linux-Android启动之Machine-Init函数
  7. for in for of区别_Python 第4课:for…in循环黄金搭档之range()函数
  8. Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
  9. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)
  10. 计算机软件通常分为两大类 它们是,计算机考试题库:计算机考试练习题(79)...
  11. Java实现查看SEGY(.su格式)数据道头字信息的GUI图形用户界面
  12. linux重新设定分区大小
  13. CTO 职场解惑指南系列(一)
  14. 数据分析与挖掘中常用Python库的介绍与实践案例
  15. 演过电影的无人驾驶卡车是如何炼成的?
  16. 3dmax简单制作方法
  17. Django实战: Python爬虫爬取链家上海二手房信息,存入数据库并在前端显示
  18. 北京大学公开课《数据结构与算法Python版》
  19. excel如何把多张表合并成一个表_excel如何快速把多个工作表合并到一个excel表
  20. 【学透二叉树-二叉搜索树(二叉树)的最近公共祖先】

热门文章

  1. 【Matlab】取整函数
  2. Media Encoder CC 2017安装使用攻略
  3. 【计组】入门篇 --《深入浅出计算机组成原理》(一)
  4. 对于https ssl中的pem文件和key 文件的理解
  5. html中设置字体字型,html中 如何在font中设置字体样式(粗体斜体等)
  6. Qt Windows安装教程
  7. C语言C程序的构成,C语言程序的构成.doc
  8. opencv自适应二值化原理
  9. 四甲基环四硅氧烷D4H
  10. Android Studio第九期 - QQ计步器效果