前序遍历(DLR):前序遍历也叫做先根遍历、先序遍历,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若为空则结束返回,否则:
- /*树结构体*/
-
typedef struct TreeNode{
-
int data; /*数据*/
-
TreeNode * left; /*左孩子*/
-
TreeNode * right; /*右孩子*/
-
TreeNode * parent; /*父亲节点*/
-
}TreeNode;
-
-
void pre_order(TreeNode * Node)
- {
-
if(Node != NULL)
-
{
-
printf("%d ", Node->data);
-
pre_order(Node->left);
-
pre_order(Node->right);
-
}
-
}
-
调用时:
-
pre_order(Root); //Root为树的根
已知一棵二叉树的前序遍历序列和中序遍历序列,可以唯一确定这棵二叉树。
已知一棵二叉树的后序遍历序列和中序遍历序列,也可以唯一确定这棵二叉树。
但是,已知一棵二叉树的前序遍历序列和后序遍历序列,不能唯一确定这棵二叉树。