• Data Structure Binary Tree: Construct Tree from given Inorder and Preorder traversals


    http://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <stack>
     6 #include <string>
     7 #include <fstream>
     8 using namespace std;
     9 
    10 struct node {
    11     char data;
    12     struct node *left, *right;
    13     node() : data(0), left(NULL), right(NULL) { }
    14     node(int d) : data(d), left(NULL), right(NULL) { }
    15 };
    16 
    17 
    18 void prints(node *root) {
    19     if (!root) return;
    20     prints(root->left);
    21     cout << root->data << " ";
    22     prints(root->right);
    23 }
    24 
    25 node *buildtree(char in[], char pre[], int beg, int end) {
    26     static int preindex = 0;
    27     if (beg > end) return NULL;
    28     node *root = new node(pre[preindex++]);
    29     int index = beg;
    30     for (int i = beg; i <= end; i++) {
    31         if (in[i] == root->data) {
    32             index = i;
    33             break;
    34         }
    35     }
    36     root->left = buildtree(in, pre, beg, index-1);
    37     root->right = buildtree(in, pre, index+1, end);
    38     return root;
    39 }
    40 
    41 int main() {
    42     char in[6] = {'D', 'B', 'E', 'A', 'F', 'C'};
    43     char pre[6] = {'A', 'B', 'D', 'E', 'C', 'F'};
    44     int len = 6;
    45     node *root = buildtree(in, pre, 0, len-1);
    46     prints(root);
    47     return 0;
    48 }
  • 相关阅读:
    模块-和包
    re模块
    递归函数
    内置函数
    C++ 创建文件的方法
    C++多态的实现条件
    C++常见错误总结
    Http客户端跳转和服务器端跳转的区别
    struts1学习
    Java 核心读书笔记 第11章
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3630376.html
Copyright © 2020-2023  润新知