二叉树的重建
来源:互联网 发布:python 全栈开发 编辑:程序博客网 时间:2024/05/01 03:49
上面是编程之美上的解法,下面是自己的解法:
#include <iostream>#include <queue>using namespace std;struct Node {Node(int i = -1, Node *pLeft = NULL, Node *pRight = NULL) : data(i), left(pLeft), right(pRight) {}int data;Node *left;Node *right;};const char *preOrder = "12473568";const char *inOrder = "47215386";void printLevel(Node *root){if (root == NULL)return;queue<Node *> nqueue;nqueue.push(root);int start = 0;int last = 1;int tempLast = last;while (!nqueue.empty()){Node *top = nqueue.front();nqueue.pop();cout << top->data << " ";if (top->left){nqueue.push(top->left);last++;}if (top->right){nqueue.push(top->right);last++;}start++;if (start == tempLast){tempLast = last;cout << endl;}}}Node *_construct(const char *preOrder, const int preLength, const char *inOrder, const int inLength){if (preOrder == NULL || preLength <= 0 || inOrder == NULL || inLength <= 0)return NULL;int pos = inLength;for (int i = 0; i < inLength; i++){if (inOrder[i] == *preOrder){pos = i;break;}}if (pos == inLength){cout << "wrong" << endl;return NULL;}cout << *preOrder << " ";Node *newNode = new Node(*preOrder - '0');newNode->left = _construct(preOrder + 1, preLength - 1, inOrder, pos);newNode->right = _construct(preOrder + pos + 1, preLength - 1, inOrder + pos + 1, inLength - pos - 1);return newNode;}Node *construct(const char *preOrder, const char *inOrder){if (preOrder == NULL || inOrder == NULL)return NULL;int preLength = strlen(preOrder);int inLength = strlen(inOrder);return _construct(preOrder, preLength, inOrder, inLength);}void preTranverse(Node *root){if (root == NULL)return;cout << root->data << " ";preTranverse(root->left);preTranverse(root->right);}void main(){Node *root = construct(preOrder, inOrder);cout << endl;if (root != NULL){preTranverse(root);}else{cout << "wrong" << endl;}}
- 二叉树的重建
- 二叉树的重建!!!
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 二叉树的重建
- 算法:二叉树的重建
- 重建二叉树的思路
- 重建二叉树以及树的遍历
- 关于二叉树重建的问题
- POJ 2255 经典的重建二叉树
- POJ 2255 二叉树的重建
- 二叉树的重建(递归实现)
- 面试题6: 二叉树的重建
- 二叉树的遍历及重建
- MRT与AlphaTest
- 在Livemedia的基础上开发自己的流媒体客户端
- linkinfo病毒
- C语言中常用的函数之一,伪随机数参数
- 数据结构的那几个实验
- 二叉树的重建
- 图的常用算法的Java实现
- 测试博客代码
- c语言中宏的定义
- 二叉树的递归遍历
- 协方差矩阵的详细说明 -------转
- WPF 自制文本下拉框,类似在百度中输出关键字,会弹出一些选项
- UIPopoverViewController的基本用法
- 第16章 直接定址表 笔记