zoukankan      html  css  js  c++  java
  • 二叉树,深搜,广搜

      1 广搜存在问题!!!!!
      2 //建立一棵树,然后做深搜,广搜
      3 #include <iostream>
      4 
      5 typedef struct node{
      6     int data;
      7     struct node* left;
      8     struct node* right;
      9 };
     10 
     11 struct node* new_node(int _data)
     12 {
     13     node* temp = (node*)malloc(sizeof(node));
     14     if(!temp)
     15     {
     16         printf("新建节点失败");
     17         exit(1);
     18     }
     19     temp->data = _data;
     20     temp->left = NULL;
     21     temp->right = NULL;
     22     return temp;
     23 }
     24 
     25 //递归
     26 void deep(node *r)
     27 {
     28     printf("%d ",r->data);
     29     if(r->left)
     30     {
     31         deep(r->left);
     32     }
     33     
     34     if(r->right)
     35         deep(r->right);
     36 }
     37 //写一个队列,有入队列,出队列的操作
     38 typedef struct queuenode
     39 {
     40     node* _node;
     41     queuenode* next;
     42 };
     43 typedef struct queue
     44 {
     45     queuenode * front;
     46     queuenode *rear;
     47 }myqueue;
     48 
     49 myqueue _queue;
     50 //原来,结构体中含有结构体的是这样初始化的
     51 queuenode* new_queuenode()
     52 {
     53     queuenode *t = (queuenode*)malloc(sizeof(queuenode));
     54     t->next = NULL;
     55     node *tt = new_node(0);
     56     t->_node = tt;
     57     return t;
     58 }
     59 
     60 void push(node *t)
     61 {
     62     queuenode *tt = new_queuenode();
     63     tt->_node = t;
     64     _queue.front = tt;
     65     _queue.front = tt->next;
     66     return;
     67 }
     68 bool isEmpty()
     69 {
     70     if(_queue.front ==_queue.rear)
     71         return 1;
     72     else
     73         return 0;
     74 
     75 }
     76 node* pop()
     77 {
     78     queuenode *tt = new_queuenode();
     79     tt = _queue.rear;
     80     _queue.rear = _queue.rear->next;
     81 
     82     node *t = new_node(0);
     83     t = tt->_node;
     84     //free(tt);
     85     return t;
     86 }
     87 
     88 void broad(node *r)
     89 {
     90     queuenode *t = new_queuenode();
     91     _queue.front = _queue.rear = t;
     92     node* aa = r->left;
     93     r->right;
     94     //初始化队列
     95     push(r);
     96     node *tempnode = new_node(0);
     97     node *l = new_node(0);
     98     node *rr = new_node(0);
     99     while(!isEmpty())
    100     {
    101         tempnode = pop();
    102         printf("%d ",tempnode->data);
    103         l = tempnode->left;
    104         push(l);
    105         rr = tempnode->right;
    106         push(rr);
    107     //    free(tempnode);
    108     }
    109     return;
    110 }
    111 int main()
    112 {
    113     //建树
    114     node* root = new_node(0);
    115     node *n1 = new_node(1);
    116     node *n2 = new_node(2);
    117     node *n3 = new_node(3);
    118     node *n4 = new_node(4);
    119     node *n5 = new_node(5);
    120     node *n6 = new_node(6);
    121     node *n7 = new_node(7);
    122     root->left = n1;
    123     root->right = n2;
    124     n1->left = n3;
    125     n1->right = n4;
    126     n2->left = n5;
    127     n2->right = n6;
    128     n3->left = n7;
    129 
    130     //深度优先 递归
    131     //deep(root);
    132     broad(root);
    133 
    134     return 0;
    135 }
  • 相关阅读:
    RPM的使用详细演示安装,删除和查询
    GCC 参数详解
    简述configure、pkgconfig、pkg_config_path三者的关系
    RPM查询篇
    Linux软件安装之RPM的安装技巧
    linux gcc 编译时头文件和库文件搜索路径
    嵌入式开发.C语言面试题
    GCC几个选项学习
    asp.net mvc 自定权限实现
    使用Jquery EasyUi常见问题解决方案
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3113641.html
Copyright © 2011-2022 走看看