假设二叉树采用二叉链存储结构存储,编写一个算法,输出一个二叉树的所有叶子节点。
解:采用先序遍历的递归算法输出所有叶子节点。对应的算法如下:void findleaf《 BTNode b){ if (b== NUIL) relurI; if (b- > lchild == NULL && b- > rchild == NULL) //为叶子节点 printf( " * c ",b- >data) ; else { findleaf(b- > lchild); //在左子树中递归查找 findleaf( b-> rchild); //在右于树中递归查找 }}
举一反三
内容
- 0
假设二叉树采用二叉链存储结构存储,设计一个算法,输出该二叉树中第一条最长的路径长度,并输出此路径上各节点的值。
- 1
假设二叉树采用二叉链存储结构,设计一个算法把树[tex=0.429x1.0]JThLUuJ8WswSAPiYZWihWg==[/tex]的左,右子树进行交换。要求不破坏原二叉树。
- 2
二叉树可以用二叉链表存储,树无法用二叉链表存储。
- 3
假设二叉树以二叉链存储,设计一个算法,判断一棵二叉树是否为完全二叉树。
- 4
编写算法,交换二叉树左右子树上的所有结点(二叉树采用二叉链表结构存储)。