106. 從中序與後序遍歷序列構造二叉樹

地址:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/php

<?php
/**
根據一棵樹的中序遍歷與後序遍歷構造二叉樹。

注意:
你能夠假設樹中沒有重複的元素。

例如,給出

中序遍歷 inorder = [9,3,15,20,7]
後序遍歷 postorder = [9,15,7,20,3]
返回以下的二叉樹:

3
/ \
9  20
/  \
15   7

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。
 */
/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     public $val = null;
 *     public $left = null;
 *     public $right = null;
 *     function __construct($value) { $this->val = $value; }
 * }
 */
class Solution {

    /**
     * @param Integer[] $inorder
     * @param Integer[] $postorder
     * @return TreeNode
     */
    function buildTree($inorder, $postorder) {
        if(!$postorder) return null;
        $x = array_pop($postorder);
        $node = new TreeNode($x);
        $key = array_search($x,$inorder);
        $node->left= $this->buildTree(array_slice($inorder,0,$key),array_slice($postorder,0,$key));
        $node->right = $this->buildTree(array_slice($inorder,$key+1),array_slice($postorder,$key));
        return $node;
    }
}
相關文章
相關標籤/搜索