博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode Week14]Construct Binary Tree from Inorder and Postorder Traversal
阅读量:4993 次
发布时间:2019-06-12

本文共 1530 字,大约阅读时间需要 5 分钟。

Construct Binary Tree from Inorder and Postorder Traversal 题解

原创文章,拒绝转载

题目来源:


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
& inOrder, vector
& 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
& inOrder, vector
& postOrder) { int size = inOrder.size(); if (size == 0) return NULL; return getTreeNode(inOrder, postOrder, 0, size - 1, 0, size - 1); }};

解题描述

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

转载于:https://www.cnblogs.com/yanhewu/p/7994878.html

你可能感兴趣的文章
JAVA遇见HTML——JSP篇(JSP状态管理)
查看>>
启动eclipse出现错误Java was started but returned exit =一个数字
查看>>
myBatis模糊查找
查看>>
数据结构与算法之五 链接列表
查看>>
java 对象数组
查看>>
设计模式读书笔记-单件模式(创建型模式)
查看>>
Oracle——热备份
查看>>
Vue路由history模式踩坑记录:nginx配置解决404问题
查看>>
c# 多张图片合成一张图片
查看>>
使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
查看>>
AngularJS多个ng-app只解析第一个的问题
查看>>
强制修改常量的值
查看>>
Grunt 初体验
查看>>
hive跑mapreduce报java.lang.RuntimeException: Error in configuring object
查看>>
ArcGIS中的坐标系统定义与投影转换方法
查看>>
机械臂的碰撞检测资料
查看>>
[UnityShader基础]01.渲染队列
查看>>
字符串转整型C++
查看>>
随机生成红包算法
查看>>
Datatable get请求传参应用
查看>>