| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1387 人关注过本帖
标题:Devc++ 二叉树实现求大佬指教
只看楼主 加入收藏
h20190611008
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-5-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
Devc++ 二叉树实现求大佬指教
#include<stdio.h>
#include<stdlib.h>
/*
    1.了解二叉树
        1.1基本概念
             根结点
             左子树指针
             右子树指针
             孩子结点
             父节点
             兄弟结点
             姐妹结点
    2.二叉树的遍历
*/
//描述单一个体
typedef struct treeNode{
    char data;//数据域字符表示
    struct treeNode* LChild;
    struct treeNode* RChild;
}TREE,LPTREE;

/*
LPSTR char *
LPCSTR const char*
*/
//别名中lp一般表示是指针别名

//没有规律的树
void insertNode(int LPTREE[],int LChild,char *LPTREE,char *RChild)
{
    parentNode->LChild = LChild;
    parentNode->RChild = RChild;
}
//打印当前结点中的元素
void printfCurNodeDate(LPTREE curDate)
{
    printf("%c\t,curData->data");
 }
 //递归法:领悟
 //先序遍历:根 左 右
 void preOrder(LPTREE root)
 {
     if(root != NULL)
     {
         printCurNodeData(root);//根
         preOrder(root->LChild);//左
        preOrder(root->RChild);//右
     }
  }
void preOderByStack(LPTRUE root)
{
    if(root == NULL) return;
    struct treeNode* stack[10];//存储每次打印节点位置
    int stackTop = -1; //栈顶标记
    //stackTop=50
    //栈容量的是0-50

    LPTREE pMove = root;//从根结点开始做打印
    while(stackTop != -1 ||pMove)
    {
        //根 左 右
        //找到最左边
        while(pMove)
        {
            //把路径入栈+打印走过的节点
            printf("%c\t",pMove->data) ;
            stack[++stakckTop]= pMove;
            pMove = pMove->LChild
         }
         //if(stackTop!=-1)
         {
             pMove = stack[stackTop];//获取栈顶元素
            stackTop--;//出栈
            pMove=pMove->RChild;
          }
    }         
 }
//中序遍历:
void midOrder(LPTREE root)
 {
     if(root != NULL)
     {
         midOrder(root->LChild);//左
         printCurNodeData(root);//根  
        midOrder(root->RChild);//右
     }
  }
//后序遍历:
void lastOrder(LPTREE root)
 {
     if(root != NULL)
     {
         lastOrder(root->LChild);//左
         printCurNodeData(root);//根  
        lastOrder(root->RChild);//右
     }
  }



int main()
{
    LPTREE A = createNode('A');
    LPTREE B = createNode('B');
    LPTREE C = createNode('C');
    LPTREE D = createNode('D');
    LPTREE E = createNode('E');
    LPTREE F = createNode('F');
    LPTREE G = createNode('G');
    insertNode(A,B,C);
    insertNode(B,D,NULL);
    insertNode(D,NULL,G);
    insertNode(C,E,F);
    printf("先序遍历:\n") ;
    preOrder(A);
    printf("\n");
    preOderByStack(A);
     
    printf("\n中序序遍历:\n") ;
    preOrder(A);
    printf("\n后序遍历:\n") ;
    preOrder(A);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: printf 遍历 二叉树 NULL void 
2020-05-03 17:01
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:20 
忠言逆耳啊,您还没到学这个的程度。
没学好写代码之前学习数据结构会摔跟头的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-05-04 08:49
快速回复:Devc++ 二叉树实现求大佬指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038756 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved