前序和中序序列重建二叉树
来源:互联网 发布:泰豪软件股份有限公司 编辑:程序博客网 时间:2024/05/17 15:40
思路
根据前序和中序的特性,前序序列的一个元素就是树的根元素,那么在中序序列找到相应的元素。找到后该元素前面所有元素都是左子树元素,后面元素都是右子树元素。那么此时跟节点的pleft就是左子树返回的结果,pright就是右子树返回的结果,使之递归即可,递归出口就是前序区间只有一个元素时。
Node* _rebuilt_In_pre_order(int *prestart, int*preEnd, int*Instart, int*InEnd){ int *left_end = Instart; Node*Root = new Node(prestart[0]); if (prestart == preEnd) { if(Instart==InEnd&&prestart[0] == Instart[0]) return Root; else { cerr << "输入有误" << endl; exit(1); } } while (left_end <= InEnd&&prestart[0] != *left_end) { left_end++; } if (left_end > InEnd){ cerr << "输入有误" << endl; exit(2); } int left_length = left_end - Instart; int *left_pre_end = prestart + left_length; if (left_length>0) { Root->_PLeft = _rebuilt_In_pre_order(prestart+1, left_pre_end, Instart, left_end - 1);//将左子树区间输入该函数,返回一个左子树的节点出来赋值给根的左 } if (left_end < InEnd) { Root->_PRight = _rebuilt_In_pre_order(prestart + 1 + left_length, preEnd, left_end + 1, InEnd); } return Root;}Node *rebuilt_In_pre_order(int * pre, int * In, int length){ if (pre == NULL || In == NULL || length <= 0) return NULL; return _rebuilt_In_pre_order(pre, pre + length - 1, In, In + length - 1);}
阅读全文
0 0
- 根据前序和中序序列重建二叉树
- 前序和中序序列重建二叉树
- 根据前序和中序列 重建二叉树
- POJ 2255 根据二叉树的前序和中序序列来重建二叉树
- 根据二叉树的前序和中序序列来重建二叉树
- 由前序遍历序列和中序遍历序列重建二叉树
- [LeetCode] 根据前序序列和中序序列重建二叉树
- 根据前序遍历序列和中序遍历序列重建二叉树
- 根据前序遍历序列和中序遍历序列重建二叉树
- 根据前序序列和中序序列重建二叉树
- 重建二叉树(前序,中序序列建树)
- 给出前序与中序 序列 重建二叉树
- 前/中序遍历序列重建二叉树
- 根据前序和中序的遍历序列重建二叉树
- 剑指Offer_06 根据前序遍历和中序遍历序列 重建二叉树
- 算法学习记录四(C++)--->通过前序和中序序列重建二叉树
- 剑指offer-重建二叉树 由前序和中序遍历序列建树
- 剑指:根据输入的前序和中续遍历序列重建二叉树
- 【C/C++开发】C++编译指令#pragma pack的配对使用
- Python类的方法(method):super的用法
- linux 下使用 tc 模拟网络延迟和丢包
- Java基础之HashMap阅读总结
- NVcaffe源码阅读——Net&Solver
- 前序和中序序列重建二叉树
- C++并发编程——在运行时选择线程数量
- QT-程序分辨率和居中显示
- 程序员找工作时的技巧
- 文档/视图架构 ing
- JAVA 语言的主要特性
- Hello world题解c++
- 20170731jenkins安装、配置以及使用(二)
- JDK1.7ConcurrentHashMap源码分析