zoukankan      html  css  js  c++  java
  • 关于二叉树的问题1-已知前序,中序求后序遍历

    对于一棵二叉树而言,可以由其前序和中序或者中序和后序的遍历序列,确定一棵二叉树。

    那么对于已知前序和中序序列,求后序序列也就是先还原二叉树,然后对其进行后序遍历即可。

    二叉树结点的结构定义如下:

    struct TreeNode
    {
        char value;
        TreeNode *leftChild;
        TreeNode *rightChild;
    };

    实现代码如下:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    TreeNode* allocateNode()
    {
    
        TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
        node->leftChild = nullptr;
        node->rightChild = nullptr;
        return node;
    }
    
    char preStr[50], inStr[50];
    void postOrder(TreeNode *T)
    {
        if (T->leftChild != nullptr)
        {
            postOrder(T->leftChild);
        }
        if (T->rightChild != nullptr)
        {
            postOrder(T->rightChild);
        }
        printf("%c ", T->value);
    }
    
    TreeNode* builtTree(int start1, int end1, int start2, int end2)
    {
        TreeNode *node = allocateNode();
        node->value = preStr[start1];
        int nodeIndex;
        for (int i = start2; i <= end2; ++i)
        if (preStr[start1] == inStr[i])
        {
            nodeIndex = i;
            break;
        }
        if (nodeIndex != start2)
        {
            node->leftChild = builtTree(start1 + 1, start1 + (nodeIndex - start2), start2, nodeIndex - 1);
        }
    
        if (nodeIndex != end2)
        {
            node->rightChild = builtTree(start1 + (nodeIndex - start2) + 1, end1, nodeIndex + 1, end2);
        }
        return node;
    }
    
    void main(void)
    {
        scanf("%s",preStr);
        scanf("%s", inStr);
        int preLen = strlen(preStr);
        int inLen = strlen(inStr);
        TreeNode *root = builtTree(0, preLen - 1, 0, inLen - 1);
        postOrder(root);
    
    }
  • 相关阅读:
    C#异步调用的好处和方法
    asp.net运行原理
    基于jQuery的AJAX和JSON的实例
    Slq Server创建索引
    SQL查询一个表中类别字段中Max()最大值对应的记录
    优化SQL Server的内存占用之执行缓存
    ASP.NET缓存
    .NET Framework 4.5新特性
    ADO.NET 连接数据库字符串(Oracle、SqlServer、Access、ODBC)
    sql server基础
  • 原文地址:https://www.cnblogs.com/tgycoder/p/4969966.html
Copyright © 2011-2022 走看看