递归生成二叉树 day2

原创 2015年11月20日 17:08:19

为了方便 决定把节点类 二叉树类写在一个cpp文件里面

节点类

struct Node
{
Node* pLeft;
Node* pRight;
char data;
}

二叉树的重构方法

Node* Rebuild(string preOrder,string midOrder)
{
    if(preOrder.size()==0)
        return NULL;

    if(midOrder.size()==0)
        return NULL;
    Node* pRoot = new Node;
    (pRoot)->data = preOrder[0];
    int root_pos = midOrder.find_first_of(preOrder[0]);

    if(root_pos == -1)
    {
        return NULL;
    }

    int left_ele_num = root_pos;

    int right_ele_num = preOrder.size()-left_ele_num-1;

    pRoot->pLeft=Rebuild(preOrder.substr(1,1+left_ele_num),midOrder.substr(0,left_ele_num));

    pRoot->pRight=Rebuild(preOrder.substr(root_pos+1,right_ele_num),midOrder.substr(root_pos+1,right_ele_num));
    return pRoot;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

day13之二叉树的前中后序遍历非递归+两个链表求差集

实现二叉树的前序/中序/后序非递归遍历。 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,...

算法导论 10.4-2 O(n)时间 递归遍历二叉树

一、题目 请写出一个O(n)时间的递归过程,在给定的n个

leetcode算法题2: 合并两个二叉树。递归,如何切入并保持清醒?

合并两个二叉树。规则是,对应的两个结点如果有重叠就求和(比如更改val),如果不重叠就使用非空的结点的值。(不考虑树释放的问题。) 演示递归的使用,如何切入与结束,如何保持清醒

数据结构面试之六——二叉树的常见操作2(非递归遍历&二叉排序树)

数据结构面试之六——二叉树的常见操作2(非递归遍历&二叉排序树) 题注:《面试宝典》有相关习题,但思路相对不清晰,排版有错误,作者对此参考相关书籍和自己观点进行了重写,供大家参考。 六、二叉树的基...

递归的方式创建二叉树

  • 2017-08-17 14:25
  • 211KB
  • 下载

二叉树的非递归遍历

二叉树2:非递归二叉树的序列打印

二叉树2:非递归二叉树的序列打印

二叉树递归

  • 2013-12-15 21:22
  • 344KB
  • 下载

二叉树的C++非递归实现

  • 2013-11-17 19:21
  • 28.39MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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