#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
};
// a is the in order array, b is the depth array
TreeNode* constructTree(int a[], int b[], int curr_dep, int left, int right) {
if (left > right)
return NULL;
int pos;
for (pos = left; pos <= right; ++pos) {
if (b[pos] == curr_dep)
break;
}
if (b[pos] != curr_dep)
return NULL;
TreeNode* root = new TreeNode;
root->val = a[pos];
root->left = constructTree(a, b, curr_dep + 1, left, pos - 1);
root->right = constructTree(a, b, curr_dep + 1, pos + 1, right);
return root;
}
void inOrder(TreeNode* root)
{
if (root == NULL)
return;
inOrder(root->left);
cout << root->val << " ";
inOrder(root->right);
}
int main(int argc, const char * argv[])
{
int a[] = {2,7,5,6,11,2,5,4,9};
int b[] = {2,1,3,2,3,0,1,3,2};
TreeNode* root = constructTree(a, b, 0, 0, 8);
// preOrder(root);
// cout << endl;
inOrder(root);
cout << endl;
}
!!!sample
最新推荐文章于 2021-12-21 19:55:36 发布