遍历的作用:
它是树结构插入,删除,修改,查找和排序运算的前提,是二叉树一切运算的基础和核心。
遍历二叉树——从根结点触发,按照某种次序依次访问二叉树中所有结点,使得每个结点均被访问一次且仅被访问一次。
前序遍历:
若二叉树为空,则空操作;
若不为空:则
先访问根结点
前序遍历左子树
前序遍历右子树
前序遍历的结果:
A | B | D | E | C | F | G |
过程解释:先访问根结点A,然后前序遍历左子树,访问A的左结点即B,然后访问B的左节点D,然后D没有左结点了,就访问B的右节点E,然后左子树遍历完了,开始前序遍历右子树,访问A的右节点C,然后访问C的左节点F,然后F没有左结点了,就访问C的右节点G,然后右子树遍历完了,结束;
代码的方式来实现:
void PreOrderTraverse(TreeNode* node)
{
//先访问根结点,然后遍历左子树,最后遍历右子树
if(node)
{
printf("%d %s\n",node->data.id,node->data.name);
PreOrderTraverse(node->left);
PreOrderTraverse(node->right);
}
}
其他代码在我的文章二叉树的二叉链表的创建,直接把这个放里面就可以运行了
在主函数里加上这两段代码即可
printf("前序遍历结果:\n");
PreOrderTraverse(tree.root);