当前位置:编程学习 > 网站相关 >>

算法与数据结构(5)——二叉查找树

 由于才疏学浅,平时做题很少建立一棵完整的树。因此觉得二叉查找树又啰嗦又没用,直到今天实验课,让我极度之无语,一个小破题儿差点没整死我... ...于是才决心好好整理一下介个曾经被我藐视过得数据结构...

  我打算先从今天的实验课的那道题说起,然后再系统写一棵二叉查找树,也为以后总结各种数的变形打好基础 ~

  实验课的题目是这样的:

题目2:

给出一个整数序列,请按照顺序建立二叉查找树(BST),然后层次化输出,即先输出根结点,然后是根结点的左孩子、根结点的右孩子,一层一层,从左到右地输出。

例:输入顺序为37,24,42,32,7,40,2,42,120。对应的二叉查找树如下所示

层次化输出为:37 24 42 7 32 40 42 2 120

 

我第一次的错误代码是这样的:

1 #include<iostream>
2  using namespace std;
3 #include<queue>
4  struct Node{
5 int value;
6 Node *left,*right;
7 Node(int v){
8 value = v;
9 left = right =NULL;
10 }
11 };
12  int main(){
13 int n,value;
14 cin>>n>>value;
15 n--;
16 Node *root = new Node(value);
17 /**///无法建立该树,应该是指针引用的问题 !!!???
18 while(n--){
19 cin>>value;
20 Node *next = root;
21 while(next!=NULL){
22 if(value<next->value)next=next->left;
23 else next = next->right;
24 }
25 next = new Node(value);
      //针对21行到25行的错误,除了后面提到的转为递归的方法解决外,其实可以进行小小的改动
      //只是当初对指针用的不是很熟练,居然忘了让指针移动...
      while(true){
        if(value<next->value){
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,