zoukankan      html  css  js  c++  java
  • 二叉树的遍历

    二叉树的遍历
    #include"iostream"
    #include
    "stdlib.h"
    using namespace std;

    struct tree
    {
    int data;
    struct tree *left;
    struct tree *right;
    };

    typedef
    struct tree treenode;
    typedef treenode
    *btree;


    /*------插入二叉树的结点-------*/
    btree insertnode(btree root,
    int value)
    {
    btree newnode;
    btree current;
    btree back;


    /*---创建新结点内存---*/

    newnode
    =(btree)malloc(sizeof(treenode));
    newnode
    ->data=value;
    newnode
    ->right=NULL;
    newnode
    ->left=NULL;

    if(root==NULL)
    {
    return newnode;
    }
    else
    {
    current
    =root;
    while(current!=NULL)
    {
    back
    =current;
    if(current->data>value)
    current
    =current->left;
    else
    current
    =current->right;
    }
    if(back->data>value)
    back
    ->left=newnode;
    else
    back
    ->right=newnode;
    }
    return root;
    }

    /*------创建二叉树--------*/

    btree createbtree(
    int *data, int len)
    {
    btree root
    =NULL;
    int i;
    for(i=0;i<len;i++)
    root
    =insertnode(root,data[i]);
    return root;
    }
    /*-----中序遍历------*/
    void inorder( btree ptr)
    {
    if(ptr!=NULL)
    {
    inorder(ptr
    ->left);
    printf(
    "[%2d]\n",ptr->data);
    inorder(ptr
    ->right);
    }
    }
    /*-----------------------*/

    /*--------前序遍历-------*/

    void preorder(btree ptr)
    {
    if(ptr!=NULL)
    {

    printf(
    "[%2d]\n",ptr->data);
    inorder(ptr
    ->left);
    inorder(ptr
    ->right);
    }
    }
    /*-----------------------------*/

    /*------后序遍历--------*/

    void postorder(btree ptr)
    {
    if(ptr!=NULL)
    {

    inorder(ptr
    ->left);
    inorder(ptr
    ->right);
    printf(
    "[%2d]\n",ptr->data);

    }
    }
    /*---------------------------*/

    /*---------主程序-----*/

    int main()
    {
    btree root
    =NULL;

    int data[9]={5,6,4,8,2,3,7,1,9};
    root
    =createbtree(data,9);
    printf(
    "树的结点内容:\n");
    inorder(root);
    cout
    <<endl;
    preorder(root);
    cout
    <<endl;
    postorder(root);
    cout
    <<endl;

    }
  • 相关阅读:
    [原]鼠标移至小图,自动显示相应大图
    [整理]asp.net导出Excel/Csv格式数据方案
    [整理]asp.net 上传大文件解决方案
    唐伯虎诗词
    [转]浅析软件项目管理中的10个误区
    [推荐]让SQL跑得更快
    [原]ASP.Net常用功能整理生成图片的缩略图
    [推荐]数据库性能优化
    SQL优化原则
    天地男儿
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1884749.html
Copyright © 2011-2022 走看看