下面的程序段,实现对一棵二叉树的先根遍历。
public void preorder(BinaryNode p) // 先根次序遍历以p结点为根的子树,递归方法
{
if (p != null) // 若二叉树不空
{
System.out.print(p.data.toString() + " "); // 根先访问
; // 遍历p的左子树,递归调用
; // 遍历p的右子树,递归调用
}
}
public void preorder(BinaryNode p) // 先根次序遍历以p结点为根的子树,递归方法
{
if (p != null) // 若二叉树不空
{
System.out.print(p.data.toString() + " "); // 根先访问
; // 遍历p的左子树,递归调用
; // 遍历p的右子树,递归调用
}
}
举一反三
- void PreOrder(BinTree bt)//递归先序遍历算法{ if(bt==NULL) return; //递归出口visit(bt); //访问根结点 InOrder (leftchild(bt)); //中序遍历左子树 InOrder (rightchild(bt)); //中序遍历右子树 }void InOrder(BinTree bt)//递归中序遍历算法{ if(bt==NULL) return; //递归出口 PreOrder (leftchild(bt)); //先序遍历左子树 visit(bt); //访问根结点 PreOrder (rightchild(bt)); //先序遍历右子树 }void main(){ bt = CreateBinTree();//创建一棵二叉树 Preorder(bt); //入口}对下面二叉树执行以上程序,则输出序列是()[img=94x192]1803078d93c9821.png[/img] A: 1,2,3,4,5 B: 1,3,5,4,2 C: 5,4,3,2,1 D: 1,3,4,5,2
- void PreOrder(BinTree bt)//递归先序遍历算法{ if(bt==NULL) return; //递归出口 visit(bt); //访问根结点 InOrder (leftchild(bt)); //中序遍历左子树 InOrder (rightchild(bt)); //中序遍历右子树 }void InOrder(BinTree bt)//递归中序遍历算法{ if(bt==NULL) return; //递归出口 PreOrder (leftchild(bt)); //先序遍历左子树 visit(bt); //访问根结点 PreOrder (rightchild(bt)); //先序遍历右子树 }void main(){ bt = CreateBinTree(); //创建一棵二叉树 Preorder(bt); //入口}对下面二叉树执行以上程序,则输出序列是()[img=94x192]18031cb3c2815d5.png[/img] A: 1,3,5,4,2 B: 1,2,3,4,5 C: 5,4,3,2,1 D: 1,3,4,5,2
- 二叉树的先序遍历指的是先( )遍历。 A: 根 B: 左子树 C: 右子树
- 若二叉树为空,则空操作,否则依次执行如下3个操作: (1) 先序遍历左子树; (2) 先序遍历右子树; (3) 访问根结点。
- 以下哪些关于中序遍历二叉查找树说法错误的是() A: 中序遍历按照节点上的键值,以升序访问BST上的所有节点 B: 中序遍历先访问根节点,然后以同样方式访问左子树和右子树 C: 中序遍历先访问叶子节点,从左子树到右子树,再到根节点 D: 中序遍历使用递归的方式最容易实现