zoukankan      html  css  js  c++  java
  • 由二叉树的中序遍历, 前序遍历, 构建二叉树

    struct TreeNode
    {
      struct TreeNode* left;
      struct TreeNode* right;
      char elem;
    };


    TreeNode* BinaryTreeFromOrderings(char* inorder, char* preorder, int length)
    {
      if(length == 0)
      {
        return NULL;
      }
      TreeNode* node = new TreeNode;//Noice that [new] should be written out.
      node->elem = *preorder;
      int rootIndex = 0;
      for(;rootIndex < length; rootIndex++)//a variation of the loop
      {
        if(inorder[rootIndex] == *preorder)
        break;
      }
      node->left = BinaryTreeFromOrderings(inorder, preorder +1, rootIndex);
      node->right = BinaryTreeFromOrderings(inorder + rootIndex + 1, preorder + rootIndex + 1, length - (rootIndex + 1));
      std::cout<<node->elem<<std::endl;
      return node;
      }

      int main(int argc, char** argv){
      char* pr="GDAFEMHZ";
      char* in="ADEFGHMZ";

      BinaryTreeFromOrderings(in, pr, 8);

       printf(" ");

      return 0;

    }

    //或者直接输出后续遍历

    struct TreeNode
    {
    struct TreeNode* left;
    struct TreeNode* right;
    char elem;
    };

    void BinaryTreeFromOrderings(char* inorder, char* preorder, int length)
    {
    if(length == 0)
    {
    //cout<<"invalid length";
    return;
    }
    TreeNode* node = new TreeNode;//Noice that [new] should be written out.
    node->elem = *preorder;
    int rootIndex = 0;
    for(;rootIndex < length; rootIndex++)
    {
    if(inorder[rootIndex] == *preorder)
    break;
    }
    //Left
    BinaryTreeFromOrderings(inorder, preorder +1, rootIndex);
    //Right
    BinaryTreeFromOrderings(inorder + rootIndex + 1, preorder + rootIndex + 1, length - (rootIndex + 1));
    cout<<node->elem<<endl;
    return;
    }


    int main(int argc, char* argv[])
    {
    printf("Hello World! ");
    char* pr="GDAFEMHZ";
    char* in="ADEFGHMZ";

    BinaryTreeFromOrderings(in, pr, 8);

    printf(" ");
    return 0;
    }

  • 相关阅读:
    ASP.Net TreeView递归
    WCF发布到IIS7问题的解决方案 (转)
    NavigationService
    【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定? Life Is Art 博客园
    Visibility
    WPF操作RichTextBox(转)
    WCF4.0进阶系列第三章 构建健壮的程序和服务(转)
    TreeView(递归)(转)
    WCF4.0 进阶系列–前言(转)
    递归删除树结构数据
  • 原文地址:https://www.cnblogs.com/barfoo/p/3972467.html
Copyright © 2011-2022 走看看