1.递归遍历
递归遍历非常简单,,,,,,
1.1前序遍历
void preOrderTraverse(BSTreeNode *root)
{
if (root != NULL)
{
printf("%d \n", root->data);
preOrderTraverse(root->left);
preOrderTraverse(root->right);
}
}
1.2中序遍历
void InOrderTraverse(BSTreeNode *root)
{
if (root != NULL)
{
InOrderTraverse(root->left);
printf("%d \n", root->data);
InOrderTraverse(root->right);
}
}
1.3后序遍历
void PostOrderTraverse(BSTreeNode *root)
{
if (root != NULL)
{
PostOrderTraverse(root->left);
PostOrderTraverse(root->right);
printf("%d \n", root->data);
}
}
2.非递归遍历
栈和队列的构建 详见其余博文
2.1前序遍历
void preOrderTraverseNR(BSTreeNode *root)
{
//建设栈
struct LinkedStack *Stack;
Stack = initStack();
while(NULL != root){
printf("%d \n", root->data);
if (NULL != root->right)
{
push(Stack, root->right);
}
if (NULL != root->left)
{
push(Stack, root->left);
}
root = pop(Stack);
}
free(Stack);
Stack = NULL;
}
下周持续
发表回复