欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1799|回復: 0
打印 上一主題 下一主題
收起左側

關于C語言構建二叉樹程序的問題!

[復制鏈接]
跳轉到指定樓層
樓主
輸入8個整數構建一個二叉樹,對于二叉樹節點,比當前節點少于或等于的放在樹的左邊子節點,大于的放在右邊子節點。
以下是我寫的代碼,輸出不出來這是為什么呢


  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct node {  //節點結構體
  4.         int data;
  5.         struct node *left;
  6.         struct node *right;
  7. } Node;

  8. Node* insert(Node *root,int value)   //創建樹
  9. {
  10.         Node* node=(Node*)malloc(sizeof(Node));//創建一個節點
  11.         node->data = value;
  12.         node->left = NULL;
  13.         node->right = NULL;
  14.         if(root==NULL)  //樹為空則創建根
  15.         {
  16.                 root==node;
  17.         }
  18.         else
  19.         {
  20.                 Node *temp=root;  //從樹根開始判斷
  21.                 while(temp!=NULL)
  22.                 {
  23.                         if(value<=temp->data)  //小于或等于進左兒子
  24.                         {
  25.                                 if(temp->left==NULL)   //若左兒子為空,直接寫入
  26.                                 {
  27.                                 temp->left=node;
  28.                                 return root;
  29.                                 }
  30.                                 else     //若左兒子不為空,繼續判斷
  31.                                 {
  32.                                         temp=temp->left;
  33.                                 }
  34.                         }
  35.                         else     //大于進右兒子
  36.                         {
  37.                                 if(temp->right==NULL)  //同左兒子
  38.                                 {
  39.                                         temp->right=node;
  40.                                         return root;
  41.                                 }
  42.                                 else
  43.                                 {
  44.                                         temp=temp->right;
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49.         return root;
  50. }

  51. void PreOrderTree(Node* root)  //前序遍歷
  52. {
  53.         if (root != NULL)
  54.         {
  55.         printf("%d ", root->data);
  56.         PreOrderTree(root->left);
  57.         PreOrderTree(root->right);
  58.         }
  59. }
  60. void InOrderTree(Node* root)   //中序遍歷
  61. {
  62.         if (root != NULL)
  63.         {
  64.         PreOrderTree(root->left);
  65.         printf("%d ", root->data);
  66.         PreOrderTree(root->right);
  67.         }
  68. }
  69. void PostOrderTree(Node* root)  //后序遍歷
  70. {
  71.         if (root != NULL)
  72.         {
  73.         PreOrderTree(root->left);
  74.         PreOrderTree(root->right);
  75.         printf("%d ", root->data);
  76.         }
  77. }

  78. int main()
  79. {
  80.         int data[8];
  81.         int i;
  82.         printf("請輸入8個整數\n");
  83.         for(i=0;i<8;i++)
  84.         {
  85.                 scanf("%d",&data[i]);
  86.         }
  87.         Node *root=NULL; //創建空樹
  88.         for(i=0;i<8;i++)
  89.         {
  90.                 root=insert(root,data[i]);
  91.         }
  92.         printf("前序遍歷為:\n");
  93.         PreOrderTree(root);
  94.         printf("\n");
  95.         printf("中序遍歷為:\n");
  96.         InOrderTree(root);
  97.         printf("\n");
  98.         printf("后序遍歷為:\n");
  99.         PostOrderTree(root);
  100.         printf("\n");
  101.         return 0;
  102. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表