zoukankan      html  css  js  c++  java
  • [Leetcode Week14]Construct Binary Tree from Inorder and Postorder Traversal

    Construct Binary Tree from Inorder and Postorder Traversal 题解

    原创文章,拒绝转载

    题目来源:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/


    Description

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

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

    Solution

    class Solution {
    public:
        TreeNode* getTreeNode(vector<int>& inOrder, vector<int>& postOrder,
                              int inStart, int inEnd, int postStart, int postEnd) {
            TreeNode* resultNode = new TreeNode(postOrder[postEnd]);
            if (postStart == postEnd)
                return resultNode;
            int i;
            int inNodeVal = postOrder[postEnd];
            for (i = inStart; i <= inEnd; i++) {
                if (inNodeVal == inOrder[i])
                    break;
            }
            if (i > inStart)
                resultNode -> left =
                        getTreeNode(inOrder, postOrder, inStart, i - 1, postStart, postStart + i - 1 - inStart);
            if (i < inEnd)
                resultNode -> right =
                        getTreeNode(inOrder, postOrder, i + 1, inEnd, postStart + i - inStart, postEnd - 1);
            return resultNode;
        }
    
        TreeNode* buildTree(vector<int>& inOrder, vector<int>& postOrder) {
            int size = inOrder.size();
            if (size == 0)
                return NULL;
            return getTreeNode(inOrder, postOrder, 0, size - 1, 0, size - 1);
        }
    };
    

    解题描述

    这道题是经典的树构建问题,通过树的中序遍历和后序遍历结果来重建树,基本的算法是通过每次从后序遍历数组末端取出元素,这个元素为当前树的根,然后再在中序遍历结果中找到这个根,根的两边分别就是左右子树。对左右子树继续递归进行相同的操作,直到数组为空即可。

  • 相关阅读:
    typora 页内跳转
    shell脚本搭建redis集群
    Html
    python json模块
    jenkins 问题合集
    day05 每日一行
    day04 每次一行
    day03 每日一行
    day02
    day02 每日一行
  • 原文地址:https://www.cnblogs.com/yanhewu/p/7994878.html
Copyright © 2011-2022 走看看