• 重建二叉树


    python: 

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
     
    #前序遍历:根 - 左节点 - 右节点
    #中序遍历:左节点- 根 - 右节点
    #后序遍历:左节点 - 右节点 - 根节点
     
     
    class Solution:
        # 返回构造的TreeNode根节点
        def reConstructBinaryTree(self, pre, tin):
            # write code here
            if not pre or not tin:
                return None
            root = TreeNode(pre.pop(0))
            index = tin.index(root.val)
            root.left = self.reConstructBinaryTree(pre,tin[:index])
            root.right = self.reConstructBinaryTree(pre,tin[index+1:])
            return root

    c++

     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* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
    13         if(pre.empty()||vin.empty()) return NULL;
    14         //先建立一个头结点
    15         TreeNode* head = new TreeNode(pre[0]);
    16         //找到vin的根节点的索引
    17         //定义一个索引变量
    18         int root_index=0;
    19         for(int i=0;i<vin.size();i++){
    20             if(vin[i]==pre[0]){
    21                 root_index = i;
    22                 break;
    23             }
    24         }
    25         vector<int> pre_left,pre_right,vin_left,vin_right;
    26         for(int i=0;i<root_index;i++){
    27             vin_left.push_back(vin[i]);
    28             pre_left.push_back(pre[i+1]);
    29         }
    30         for(int j=root_index+1;j<pre.size();j++){
    31             pre_right.push_back(pre[j]);
    32             vin_right.push_back(vin[j]);
    33         }
    34         head->left = reConstructBinaryTree(pre_left,vin_left);
    35         head->right = reConstructBinaryTree(pre_right,vin_right);
    36         return head;
    37     }
    38 };
  • 相关阅读:
    vue模拟接口数据
    修改placeholder的颜色
    network is unreachable mongodb
    数字转时间
    前端下载流文件
    jquery的AJAX中各个事件执行顺序
    移动端谨慎使用overflow:hidden
    时间函数整理
    background-size使用时的注意点
    关于iframe
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11107253.html
Copyright © 2020-2023  润新知