数据结构--二叉树的链式表示

简介: 复习

#include <iostream>

#include <windows.h>

usingnamespacestd;

typedefstructBiTNode {

   chardata;

   structBiTNode*lchild, *rchild;

}BiTNode, *BiTree;

// 先序次序输入二叉树中结点的值,创建二叉链表表示的二叉树

voidcreateTree(BiTree&T) {

   charch;

   cin>>ch;

   if (ch=='#') {

       // 递归结束,创建空树

       T=NULL;

   } else {

       T=newBiTNode; // 生成根结点

       T->data=ch;

       createTree(T->lchild); // 生成左子树

       createTree(T->rchild); // 生成右子树

   }

}

// 先序遍历 NLR

voidpreOrderTraverse(BiTreeT) {

   if (T) {

       cout<<T->data; // 访问根结点

       preOrderTraverse(T->lchild); // 先序遍历左子树

       preOrderTraverse(T->rchild); // 先序遍历右子树

   }

}

// 中序遍历 LNR

voidinOrderTraverse(BiTreeT) {

   if (T) {

       inOrderTraverse(T->lchild); // 中序遍历左子树

       cout<<T->data; // 访问根结点

       inOrderTraverse(T->rchild); // 中序遍历右子树

   }

}

// 后序遍历 LRN

voidpostOrderTravese(BiTreeT) {

   if (T) {

       postOrderTravese(T->lchild); // 后序遍历左子树

       postOrderTravese(T->rchild); // 后序遍历右子树

       cout<<T->data; // 访问根结点

   }

}

// 二叉树的深度

intdepth(BiTreeT) {

   if (T==NULL) {

       return0;

   } else {

       intl=depth(T->lchild); // 左子树的深度

       intr=depth(T->rchild); // 右子树的深度

       returnl<r? (r+1) : (l+1);

   }

}

// 二叉树的结点数

intnodeCount(BiTreeT) {

   if (T==NULL) {

       return0;

   } else {

       returnnodeCount(T->lchild) +nodeCount(T->rchild) +1; // 左子树结点树 + 右子树结点树 + 1(根结点)

   }

}

intmain() {

   BiTreeT;

   createTree(T);

   cout<<"前序遍历:"<<endl;

   preOrderTraverse(T);

   cout<<endl;

   cout<<"中序遍历:"<<endl;

   inOrderTraverse(T);

   cout<<endl;

   cout<<"后序遍历:"<<endl;

   postOrderTravese(T);

   cout<<endl;

   cout<<"二叉树的深度:"<<depth(T) <<endl;

   cout<<"二叉树的结点个数:"<<nodeCount(T) <<endl;

   system("pause");

   return0;

}


相关文章
|
20天前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
14 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
20天前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
15 0
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
|
21天前
|
Java
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
24 1
|
21天前
|
算法 Java C语言
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
22 1
|
23天前
|
存储
【数据结构】二叉树链式结构——感受递归的暴力美学
【数据结构】二叉树链式结构——感受递归的暴力美学
|
26天前
|
存储 算法 调度
数据结构--二叉树的顺序实现(堆实现)
数据结构--二叉树的顺序实现(堆实现)
|
19天前
|
存储 算法
探索数据结构:分支的世界之二叉树与堆
探索数据结构:分支的世界之二叉树与堆
|
20天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
16 0
|
23天前
|
存储 算法
【数据结构】二叉树——顺序结构——堆及其实现
【数据结构】二叉树——顺序结构——堆及其实现
|
25天前
|
存储
【数据结构】二叉树零基础无压力上手,超详解
【数据结构】二叉树零基础无压力上手,超详解
24 0