zoukankan      html  css  js  c++  java
  • Construct Binary Tree From Preorder and Inorder Traversal **

    Given preorder and inorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    Analyse: We can see from the pic above that the left of the pivot element of Preorder sequence in Inorder sequence is the left subtree of this element, and the right part is the right subtree of this element. 

    Runtime: 64ms.

    Recursion
     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
    13         if(preorder.size() == 0) return NULL;
    14         return build(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size() - 1);
    15     }
    16     TreeNode* build(vector<int>& preorder, int preLeft, int preRight, vector<int>& inorder, int inLeft, int inRight){
    17         if(preLeft > preRight) return NULL; //when will this case appear
    18         
    19         TreeNode* root = new TreeNode(preorder[preLeft]);
    20         if(preLeft == preRight) return root;
    21         
    22         //find the position of root(preorder[preLeft]) in inorder sequence
    23         int index = 0;
    24         for(; index < inorder.size(); index++){
    25             if(inorder[inLeft + index] == preorder[preLeft]) break;
    26         }
    27         
    28         root->left = build(preorder, preLeft + 1, preLeft + index, inorder, inLeft, inLeft + index - 1);
    29         root->right = build(preorder, preLeft + index + 1, preRight, inorder, inLeft + index + 1, inRight);
    30         
    31         return root;
    32     }
    33 };

  • 相关阅读:
    web性能优化
    比 git log 更强大的 git reflog
    父组件调用子组件的方法
    react-loadable 进行代码分割的基本使用
    create-react-app 使用 webpack 打包压缩失败
    mysql安装问题
    php 二维数组排序
    php 文件缓存 include vs serialize vs json_encode
    ab命令压力测试
    mysql使用的坑
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4687223.html
Copyright © 2011-2022 走看看