数据结构学习-(一)二叉树
来源:互联网 发布:什么软件可以看东森 编辑:程序博客网 时间:2024/06/18 07:17
二叉树基本代码:
BinTreeClass.h文件
#include<iostream>using namespace std;class Node{friend class BinTree;public:Node():lchild(0), rchild(0){}Node(int val, Node *lptr=0, Node *rptr=0){data = val;lchild = lptr;rchild = rptr;}int Getdata(){return data;}Node *Left(){return lchild;}Node *Right(){return rchild;}private:Node *lchild, *rchild;int data;};class BinTree//二叉排序树{public:BinTree():root(0){}~BinTree(){ Destroy(root);}void insertNode(int val){insertNode(root, val);}void PreOrder(){PreOrder(root);}void InOrder(){InOrder(root);}void PostOrder(){PostOrder(root);}int Depth(){return Depth(root);}int Size(){return Size(root);}int LeafCount(){return LeafCount(root);}private:Node *root;void insertNode(Node *&t, int val);//插入节点void PreOrder(Node *t);//前序遍历void InOrder(Node *t);//中序遍历void PostOrder(Node *t);//后序遍历void Destroy(Node *t);//销毁int Depth(Node *t);//树的深度int Size(Node *t);//树的节点数int LeafCount(Node *t);//树的叶节点数};void BinTree::insertNode(Node *&t, int val){if(t==0)t = new Node(val);else if(val < t->data)insertNode(t->lchild, val);elseinsertNode(t->rchild, val);}void BinTree::PreOrder(Node *t){if(t != 0){cout << t->data << ' ';PreOrder(t->lchild);PreOrder(t->rchild);}}void BinTree::InOrder(Node *t){if(t != 0){InOrder(t->lchild);cout << t->data << ' ';InOrder(t->rchild);}}void BinTree::PostOrder(Node *t){if(t != 0){PostOrder(t->lchild);PostOrder(t->rchild);cout << t->data << ' ';}}void BinTree::Destroy(Node *t){if(t != 0){Destroy(t->lchild);Destroy(t->rchild);delete t;}}int BinTree::Depth(Node *t){if(t==0)return -1;int dl=Depth(t->lchild);int dr=Depth(t->rchild);return 1 + (dl > dr ? dl : dr);}int BinTree::Size(Node *t){if(t==0)return 0;return 1+Size(t->lchild)+Size(t->rchild);}int BinTree::LeafCount(Node *t){if(t==0)return 0;if(t->lchild == NULL && t->rchild == NULL)return 1;elsereturn LeafCount(t->lchild)+LeafCount(t->rchild);}
Test.cpp文件
#include "BinTreeClass.h"void main(){BinTree BTree;int x;cout << "请输入10个整数:\n";for(int i=0; i<10; i++){cin >> x;BTree.insertNode(x);}cout << "先序遍历序列:\n";BTree.PreOrder();cout << "\n中序遍历序列:\n";BTree.InOrder();cout << "\n后序遍历序列:\n";BTree.PostOrder();cout << "\n二叉树的深度:\n";cout << BTree.Depth() << endl;cout << "\n二叉树的节点个数:\n";cout << BTree.Size() << endl;cout << "\n二叉树的叶节点个数:\n";cout << BTree.LeafCount() << endl;}
0 0
- 数据结构学习-(一)二叉树
- 数据结构(一):树与二叉树
- 数据结构与算法--二叉树(一)
- 【数据结构学习】二叉树
- 数据结构学习(C++)—二叉树
- 数据结构与算法学习笔记——二叉树遍历(一)(递归、迭代)
- 二叉树学习(一)
- 数据结构学习之二叉树
- 数据结构学习—二叉树
- 数据结构学习笔记:二叉树
- 数据结构学习笔记 --- 二叉树
- 数据结构学习笔记:二叉树
- 数据结构学习之二叉树
- 数据结构学习 队列 二叉树
- 数据结构学习五:二叉树
- 数据结构学习笔记 --- 二叉树
- 数据结构学习之二叉树
- 【数据结构】二叉树的学习
- Activity之四大启动模式
- 4.15
- 2017网易游戏春招实习笔试回顾(机器学习工程师岗)
- 为输入框加入数字js校验
- C++的string长度和插入函数
- 数据结构学习-(一)二叉树
- [js]正则表达式
- Xcode GitHup版本同步错误
- linux nfs,autofs配置
- springmvc之jstlView使用
- 超出activity生命周期的Thread
- VC++无标题窗口以及控件拖动的方法
- git配置
- 半路算法之二项树与二项堆