c++二叉树
来源:互联网 发布:网络爬虫视频 编辑:程序博客网 时间:2024/06/04 18:45
// BinTree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>//the struct of the Nodestruct binNode{int data;binNode *leftNode;binNode *rightNode;};class binaryTree{public:unsigned int nodeNum;unsigned int treeDepth;unsigned int leafNum;binNode *root;binaryTree(){root = NULL;}void createBinaryTree(int data);void preOrder(binNode *curNod); //root-left-rightvoid inOrder(binNode *curNod); //left-root-rightvoid postOrder(binNode *curNod); //left-right-root int count(binNode *curNod); int count();int findLeaf(binNode *curNod); //get the number of leavesint findNode(binNode *curNod); //protected:private:};void binaryTree::createBinaryTree(int dataNew){binNode *newNode = new binNode;newNode->data = dataNew;newNode->rightNode = newNode->leftNode = NULL;if(root == NULL)root = newNode;else{binNode *curNode = root;binNode *preNode = NULL;while ( NULL != curNode ){ preNode = curNode;if (dataNew < curNode->data)curNode = curNode->leftNode;elsecurNode = curNode->rightNode;}if (dataNew < preNode->data)preNode->leftNode = newNode;elsepreNode->rightNode = newNode;}}int binaryTree::count(){return binaryTree::count(root); }int binaryTree::count(binNode *p){if(p == NULL)return 0;elsereturn count(p->leftNode) + count(p->rightNode) + 1; }void binaryTree::preOrder(binNode *curNode){if(curNode != NULL){std::cout<<curNode->data<<" ";preOrder(curNode->leftNode);preOrder(curNode->rightNode);}}void binaryTree::postOrder(binNode *curNode){if(curNode != NULL){postOrder(curNode->leftNode);postOrder(curNode->rightNode);std::cout<<curNode->data<<" ";}}void binaryTree::inOrder(binNode *curNode){if(curNode != NULL){inOrder(curNode->leftNode);std::cout<<curNode->data<<" ";inOrder(curNode->rightNode);}}int binaryTree::findLeaf(binNode *curNode){if ( curNode == NULL)return 0;else{if ( (curNode->leftNode != NULL) || (curNode->rightNode != NULL ) ){findLeaf(curNode->leftNode);findLeaf(curNode->rightNode);}else{binaryTree::leafNum ++;std::cout<<curNode->data<<" ";}return binaryTree::leafNum;}}void main(){binaryTree myBinaryTree;int array[]={7,4,2,3,15,35,6,45,55,20,1,14,56,57,58};unsigned int nodeNum = sizeof(array)/sizeof(array[0]); myBinaryTree.nodeNum = nodeNum;std::cout<<"create a binary tree by order: "<<std::endl;for(int i = 0; i < nodeNum; i++){std::cout<<array[i]<<" ";myBinaryTree.createBinaryTree(array[i]);}std::cout<<std::endl;std::cout<<myBinaryTree.count(myBinaryTree.root)<<std::endl;std::cout<<myBinaryTree.count()<<std::endl;myBinaryTree.postOrder(myBinaryTree.root);std::cout<<std::endl;myBinaryTree.inOrder(myBinaryTree.root);std::cout<<std::endl;unsigned int leafNum = myBinaryTree.findLeaf(myBinaryTree.root);std::cout<<"leaf number:"<<leafNum<<std::endl;}
0 0
- C语言版--二叉树
- btree-C二叉树
- 数据结构(C++)--二叉树
- C二叉树
- C语言版--二叉树
- 二叉查找树(C#)
- C语言 二叉树
- c的二叉树
- 二叉树 c实现
- 二叉树(数据结构 c++)
- c语言 二叉树
- 二叉树(C++)
- [c]二叉树
- 【数据结构】二叉树(c++)
- 二叉树(C语言)
- 二叉搜索树(c++)
- [C++]二叉树总结
- <<c>>二叉查找树
- Convert Sorted Array to Binary Search Tree
- android 环境搭建之---创建SD卡
- Extjs利用vtype验证表单
- asp中的引号规则,在asp中如何书写sql语句
- 番茄工作法
- c++二叉树
- Rails Form helpers
- 时间选择框
- 设计模式学习--组合模式,c++代码
- 爱生活爱分享-->爱奇艺、优酷、好莱坞、PPTV等免费资源
- VS2010中检测内存泄露
- TDD之驱动程序和占位程序,和类的接口与实现
- ags infoWindow 应用
- oracle可重复执行脚本写法---总结