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

    题目描述

    编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

    输入描述:

    输入包括1行字符串,长度不超过100。

    输出描述:

    可能有多组测试数据,对于每组数据,
    输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
    每个输出结果占一行。
    示例1

    输入

    复制
    abc##de#g##f###
    

    输出

    复制
    c b e g d f a 


    代码:
    #include <iostream>
    #include <string>
    using namespace std;
    struct Node
    {
        char p;
        Node *lchild, *rchild;
        Node(char c) :p(c), lchild(NULL), rchild(NULL){};
    
    };
      string str;
      int  i = 0;
    Node *CreateTree()//构造树
    {
        
            char r = str[i++];
            Node *root = new Node(r);
            if (r == '#')
            {
                return NULL;
    
            }
            
            root->lchild = CreateTree();
            root->rchild = CreateTree();
            return root;
    
    }
    
    
    void  InorderTree(Node *root)
    {
        if (root == NULL)
        {
            return ;
        }
        InorderTree(root->lchild);
        cout << root->p << " ";
        InorderTree(root->rchild);
    }
    int main()
    {
        
        
        while (cin >> str)
        {
            
            Node *root = CreateTree();
            InorderTree(root);
            
        }
        
        system("pause");
        
    }
    View Code
  • 相关阅读:
    c/c++指针
    C++小思
    gvim-ide plugins
    Windows下文件的所有和权限
    C++枚举类型
    linux的cgroup控制
    linux的free命令
    linux下可以禁用的一些服务
    bat programming is easy and powerful
    c++类定义代码的分离
  • 原文地址:https://www.cnblogs.com/hequnwang/p/10475447.html
Copyright © 2011-2022 走看看