zoukankan      html  css  js  c++  java
  • [LeetCode] 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.

    树的递归

     1 /**
     2  * Definition for binary tree
     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 *createTree(vector<int> &preorder, int preBeg, int preEnd, vector<int> &inorder, int inBeg, int inEnd)
    13     {
    14         if (preBeg > preEnd)
    15             return NULL;
    16             
    17         int root = preorder[preBeg];
    18         int index;
    19         for(int i = inBeg; i <= inEnd; i++)
    20             if (root == inorder[i])
    21             {
    22                 index = i;
    23                 break;
    24             }
    25         
    26         int len = index - inBeg;
    27         TreeNode *left = createTree(preorder, preBeg + 1, preBeg + len, inorder, inBeg, index - 1);
    28         TreeNode *right = createTree(preorder, preBeg + len + 1, preEnd, inorder, index + 1, inEnd);
    29         
    30         TreeNode *node = new TreeNode(root);
    31         
    32         node->left = left;
    33         node->right = right;
    34         
    35         return node;        
    36     }
    37     
    38     TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
    39         // Start typing your C/C++ solution below
    40         // DO NOT write int main() function
    41         if (preorder.size() == 0)
    42             return NULL;
    43             
    44         TreeNode *head = createTree(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size() - 1);
    45         
    46         return head;
    47     }
    48 };
  • 相关阅读:
    (第二天)原型、继承
    (第一天)包装对象、作用域、创建对象
    你欺骗了我,可选参数必须位于所有参数最后
    反射之动态创建对象
    异步编程
    前端性能优化方法
    性能瓶颈分析方法
    性能测试应用领域
    <转>jmeter(十五)函数助手
    正则表达式基础知识
  • 原文地址:https://www.cnblogs.com/chkkch/p/2744747.html
Copyright © 2011-2022 走看看