-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBinary Tree and Recovering.h
More file actions
31 lines (29 loc) · 919 Bytes
/
Copy pathBinary Tree and Recovering.h
File metadata and controls
31 lines (29 loc) · 919 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
template<typename DataType>
class BinaryTreeNode
{
public:
BinaryTreeNode(DataType data) :
left(NULL), right(NULL), data(data) {}
BinaryTreeNode *left;
BinaryTreeNode *right;
DataType data;
};
typedef BinaryTreeNode<char> TreeNode;
TreeNode *make_tree(const char *preorder, const char *inorder, int length)
{
if (length == 0) return NULL;
int root = 0;
while (root < length && inorder[root] != preorder[0]) root++;
TreeNode *node = new TreeNode(preorder[0]);
node->left = make_tree(preorder + 1, inorder, root);
node->right = make_tree(preorder + root + 1, inorder + root + 1, length - root - 1);
return node;
}
template<typename DataType>
void print_postordered_tree(BinaryTreeNode<DataType> *node, ostream &os = cout)
{
if (node == NULL) return;
print_postordered_tree(node->left, os);
print_postordered_tree(node->right, os);
os << node->data;
}