定义二叉树
struct treeNode
{
string data;
treeNode* left;
treeNode* right;
treeNode()
{
data = "";
left = NULL;
right = NULL;
}
};
三种遍历
函数迭代
void PreorderTraversal(treeNode* node)
{
if (node == NULL)
return;
else
{
std::cout << node->data <<"->";
if (node->left != NULL)
{
PreorderTraversal(node->left);
}
if (node->right != NULL)
{
PreorderTraversal(node->right);
}
}
}
void InorderTraversal(treeNode* node)
{
if (node == NULL)
return;
else
{
if (node->left != NULL)
{
InorderTraversal(node->left);
}
std::cout << node->data << "->";
if (node->right != NULL)
{
InorderTraversal(node->right);
}
}
}
void postorderTraversal(treeNode* node)
{
if (node == NULL)
return;
else
{
if (node->left != NULL)
{
postorderTraversal(node->left);
}
if (node->right != NULL)
{
postorderTraversal(node->right);
}
std::cout << node->data << "->";
}
}
迭代代码
void my_treenode()
{
struct treeNode *root = new treeNode();
treeNode A, B, C, D, E;
root->data = "Root";
A.data = "A";
B.data = "B";
C.data = "C";
D.data = "D";
E.data = "E";
root->left = &A;
root->right = &B;
A.left = &C;
A.right = &D;
B.left = &E;
cout << "PreorderTraversal:"<<endl;
PreorderTraversal(root);
cout << "\n InorderTraversal:" << endl;
InorderTraversal(root);
cout << "\n postorderTraversal:" << endl;
postorderTraversal(root);
cout << "\n";
}