Middle-题目71:105. Construct Binary Tree from Preorder and Inorder Traversal

原创 2016年05月31日 16:41:28

题目原文:
Given preorder and inorder traversal of a tree, construct the binary tree.
题目大意:
给出一棵二叉树中序和前序遍历的序列,构建这个二叉树。
题目分析:
中序遍历的顺序是左-中-右,而后序遍历是中-左-右,所以取前序遍历的第一个元素到中序遍历串中匹配,匹配到之后递归根据子树的中序和前序序列构建左右子树。
源码:(language:c)

struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {
    if(preorderSize == 0 && inorderSize == 0)
        return NULL;
    else {
        int middle = preorder[0];
        int i;
        for (i = 0;inorder[i] != middle; i++);
        struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode)); //generate root
        root->val = middle;
        root->left = buildTree(preorder+1, i, inorder, i);
        root->right = buildTree(preorder+i+1, preorderSize-i-1, inorder+i+1, inorderSize-i-1);
        return root;
    }    
}

成绩:
20ms,beats 23.68%,众数20ms,36.84%
Cmershen的碎碎念:
要注意,前序和后序遍历是不能唯一确定二叉树的。但是前序(中序,后序)+层次遍历能否确定二叉树,如何还原二叉树,还有待考虑。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode 144 Binary Tree Preorder Traversal(二叉树的前序遍历)+(二叉树、迭代)

翻译给定一个二叉树,返回其前序遍历的节点的值。例如: 给定二叉树为 {1,#, 2, 3} 1 \ 2 / 3 返回 [1, 2, 3]备注:用递归是微不足道的,...
  • NoMasp
  • NoMasp
  • 2016年03月19日 16:15
  • 3087

Binary Tree Traversal二叉树遍历方法总结

Binary Tree Traversal二叉树遍历方法总结这里总结的二叉树遍历分为两大类: 深度优先(depth-first traversal) 广度优先(breadth-first traver...
  • jackey_jk
  • jackey_jk
  • 2016年04月01日 02:58
  • 776

Binary Tree Inorder Traversal——二叉树的中序遍历

原题: Given a binary tree, return the inorder traversal of its nodes' values. =>给定一个二叉树,返回所有节点的中序遍历 ...
  • u011960402
  • u011960402
  • 2014年02月07日 09:21
  • 2228

leetcode94 inorderTraversal中序遍历的三种实现

题目很简单二叉树的中序遍历,数据结构的教材上都会有这样的示例代码。其实中序遍历有三种解法: 递归解法(recursive solution) 栈迭代解法(iterative way(stack)) ...
  • hengyishu
  • hengyishu
  • 2015年08月02日 10:12
  • 598

二叉树遍历之morris traversal

刚开始接触到这个是因为算法导论习题10.4-5,其中有一句话说不能改变二叉树结构,即使临时改变也不行,个人就感觉改变二叉树结构也可以进行遍历。 搜索的过程中发现了morris 遍历,刚开始根...
  • wdq347
  • wdq347
  • 2013年04月26日 11:40
  • 5508

94 Binary Tree Inorder Traversal 【递归和迭代的对比较分析】

一道很常规的二叉树遍历题,相信大家都在课上学习过。 但是题目要求是不能用递归调用的方法,也就是课上讲过的方法。要用iterative迭代的方法,也就是一个一个找,通过while循环来输出。 先把递...
  • laserljy123
  • laserljy123
  • 2017年03月20日 13:31
  • 71

第十四周算法分析与设计:Binary Tree Preorder Traversal

问题描述: Given a binary tree, return the preorder traversal of its nodes’ values. For example: ...
  • qq_20353557
  • qq_20353557
  • 2017年05月26日 23:41
  • 49

左右值无限分类 预排序遍历树算法:modified preorder tree traversal algorithm

介绍: 什么是左右值无限级分类: 左右值无限级分类,也称为预排序树无限级分类,是一种有序的树状结构,位于这些树状结构中的每一个节点都有一个“左值”和“右值”,其规则是:每一个后代节点的左值总是大于父类...
  • i_bruce
  • i_bruce
  • 2014年11月27日 23:14
  • 7028

二叉搜索树(Binary Search Tree )的定义及分析

定义:     二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同。 左子树(如果非空)上所...
  • jsh13417
  • jsh13417
  • 2013年01月22日 21:59
  • 3349

二叉搜索树(Binary Search Tree)的插入与删除

二叉搜索树的插入关键是要找到元素应该插入的位置,可以采用与Find类似的方法。 二叉搜索树的删除则要考虑三种情况:   1.要删除的是叶节点:直接删除,并再修改其父节点指针置为NULL ...
  • song_hui_xiang
  • song_hui_xiang
  • 2015年08月16日 13:10
  • 985
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目71:105. Construct Binary Tree from Preorder and Inorder Traversal
举报原因:
原因补充:

(最多只允许输入30个字)