【面试题精选】1-构造一个二叉查找树-C++实现
2012-09-26 10:48
531 查看
根据输入的数组元素,构造一个二叉查找树。
#include <iostream> using namespace std; /*二叉查找树结构*/ typedef struct BSTree { int node_value; struct BSTree * left; struct BSTree * right; }Tree; /*****构造二叉查找树**********************************************/ void CreateBSTree(Tree * root,int node_value); Tree * CreateBSTree(int * array_list,int array_length); void Print(Tree* root); /***************************************************************/ /***************************************************************/ int main(int argc,char * argv) { Tree * root = NULL; int list[]={5,3,4,9,1,7,11}; root = CreateBSTree(list,7); std::cout<<"Cearte BSTree."<<std::endl; Print(root); return 0; } /*生成二叉查找树*/ Tree * CreateBSTree(int * array_list,int array_length) { if(array_length <= 0) { return false; } Tree * root = NULL; root = new BSTree(); root->left = NULL; root->right = NULL; root->node_value = array_list[0]; for(int i=1;i<array_length;i++) { CreateBSTree(root,array_list[i]); } return root; } void CreateBSTree(Tree * root,int node_value) { if(root == NULL) { return ; } if(root->node_value > node_value) { if(root->left == NULL) { Tree * node = new Tree(); node->left = NULL; node->right = NULL; node->node_value = node_value; root->left = node; } else { CreateBSTree(root->left,node_value); } } else { if(root->right == NULL) { Tree * node = new Tree(); node->left = NULL; node->right = NULL; node->node_value = node_value; root->right = node; } else { CreateBSTree(root->right,node_value); } } } /*中序排序输出二叉查找树*/ void Print(Tree* root) { if(root == NULL) { return ; } Print(root->left); std::cout<<root->node_value<<"\t"; Print(root->right); }
相关文章推荐
- 【C++】声明并实现一个万年历类【腾讯面试题】
- 面试题:C++实现一个不能被继承的类
- C++面试题:两个队列实现一个栈
- C++面试题(二)——自己实现一个String类
- C++【面试题】:类实现万年历(日期计算器),(含构造函数、拷贝构造、运算符重载、析构函数)
- 面试题精选(76):给定BST先序遍历序列,不构造BST的情况下判断BST是否每个node都只有一个child
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- C++面试题 用俩个栈(队列)实现一个队列(栈)
- C++【面试题】:类实现万年历(日期计算器),(含构造函数、拷贝构造、运算符重载、析构函数)
- C++面试题(二)——自己实现一个String类
- C++ 实现一个日期类
- C++面试题模拟实现String
- 一个Windows C++的线程类实现
- 一个通用的Trie树,标准C++实现
- 猜数游戏的一个C++实现
- C++实现一个LRU Cache
- c++一个实现分数大小比较和各种运算的类
- 微软,Google面试题 (18) —— 用两个栈实现一个队列
- C++实现:双输入单输出系统:建立一个 感知器网络,实现上述样本的分类。计算出相应的网络权值矩阵w。