当前位置: 首页 > 面试题库 >

手写代码:通过前序和中序还原二叉树

潘泰
2023-03-14
本文向大家介绍手写代码:通过前序和中序还原二叉树相关面试题,主要包含被问及手写代码:通过前序和中序还原二叉树时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

//算法1

#include <iostream>
#include <fstream>
#include <string>
struct TreeNode
{
struct TreeNode* left;
struct TreeNode* right;
char  elem;
};
 
TreeNode* BinaryTreeFromOrderings(char* inorder, char* preorder, int length)
{
if(length == 0)
{
return NULL;
}
TreeNode* node = new TreeNode;
node->elem = *preorder;
int rootIndex = 0;
for(;rootIndex < length; rootIndex++)
{
if(inorder[rootIndex] == *preorder)
break;
}
node->left = BinaryTreeFromOrderings(inorder, preorder +1, rootIndex);
node->right = BinaryTreeFromOrderings(inorder + rootIndex + 1, preorder + rootIndex + 1, length - (rootIndex + 1));
std::cout<<node->elem<<std::endl;
free(node);
return NULL;
}
int main(int argc, char** argv){
char* pr="GDAFEMHZ";
char* in="ADEFGHMZ"; BinaryTreeFromOrderings(in, pr, 8); printf("\n"); return 0;}

 

 类似资料:
  • 本文向大家介绍手写代码:二叉树序列化反序列化?相关面试题,主要包含被问及手写代码:二叉树序列化反序列化?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: > 序列化:必须保存一个中序遍历结果,然后外加一个前序或者后序遍历结果 >反序列化:根据两次遍历生成的结果恢复二叉树,代码如下(前序和中序):

  • 本文向大家介绍通过先序遍历和中序遍历后的序列还原二叉树(实现方法),包括了通过先序遍历和中序遍历后的序列还原二叉树(实现方法)的使用技巧和注意事项,需要的朋友参考一下 当我们有一个 先序遍历序列:1,3,7,9,5,11 中序遍历序列:9,7,3,1,5,11 我们可以很轻松的用笔写出对应的二叉树。但是用代码又该如何实现? 下面我们来简单谈谈基本思想。 首先,先序遍历的顺序是根据 根-左孩子-右孩

  • 本文向大家介绍手写代码:求二叉树每层最大值相关面试题,主要包含被问及手写代码:求二叉树每层最大值时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 思路:遍历树,给树的每一个节点赋予层数的信息,定义一个数组maxNum数组,存储每层中最大值,其下标i对应于树中的第i层,其中根节点为第0层。在遍历某个树节点时,先判断该节点的层数与当前数组中已存储的数是否相等,若相等,则将该节点值与当前数组最后一

  • 本文向大家介绍手写代码:二叉树深度优先遍历相关面试题,主要包含被问及手写代码:二叉树深度优先遍历时的应答技巧和注意事项,需要的朋友参考一下 参考回答: //深度优先搜索 //利用栈,现将右子树压栈再将左子树压栈

  • 本文向大家介绍算法题,给前序和中序,求出二叉树相关面试题,主要包含被问及算法题,给前序和中序,求出二叉树时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍手写代码:冒泡排序相关面试题,主要包含被问及手写代码:冒泡排序时的应答技巧和注意事项,需要的朋友参考一下 参考回答: