问题为构建一颗二叉树,并实现两大功能,(1)以二叉链表为二叉树的存储结构,设计算法按前序遍历次序输出二叉树中的叶子结点
(2)以二叉链表作为二叉树的存储结构,编写算法实现交换二叉树每个结点的左孩子和右孩子。
思路及注意事项: (1)因我们需要不断创造节点,因此我们可以根据输入的字符来判断是否分配空间。而不需初始化。 (2)先序遍历是先对该节点实行操作(输出节点的数据) (3)交换时,直接对lnode,rnode进行交换,而不是再次定义几个变量,这样是交换不了的。(虽然都是交换地址,但后者是交换新变量的地址😀)
(2)以二叉链表作为二叉树的存储结构,编写算法实现交换二叉树每个结点的左孩子和右孩子。
思路及注意事项: (1)因我们需要不断创造节点,因此我们可以根据输入的字符来判断是否分配空间。而不需初始化。 (2)先序遍历是先对该节点实行操作(输出节点的数据) (3)交换时,直接对lnode,rnode进行交换,而不是再次定义几个变量,这样是交换不了的。(虽然都是交换地址,但后者是交换新变量的地址😀)
代码
using namespace std;
typedef struct BiTnode {
char data;
struct BiTnode* lnode, * rnode;
}BiTnode,*BiTree;
void creat(BiTree &T)
{
char ch;
cin >> ch;
if (ch == '#')T = NULL;
else
{
T = new BiTnode;
T->data = ch;
creat(T->lnode);
creat(T->rnode);
}
}
void show(BiTree T)
{
if (T != NULL)
{
cout << T->data;
show(T->lnode);
show(T->rnode);
}
}
void change(BiTree& T)
{
if (T->lnode != NULL && T->rnode != NULL)
{
change(T->lnode);
change(T->rnode);
BiTree p1 = T->lnode;
T->lnode = T->rnode;
T->rnode = p1;
}
}
int main()
{
BiTree T;
creat(T);
show(T);
change(T);
show(T);
return 0;
}
构建二叉树并实现前序遍历叶子节点及交换孩子节点
该文章描述了如何构建一棵二叉树,使用二叉链表作为存储结构,并提供了两个功能的算法:一是按照前序遍历顺序输出叶子节点;二是交换二叉树中每个节点的左右孩子。在实现过程中,注意了节点的动态创建以及在交换节点时不使用额外变量直接交换指针。
893

被折叠的 条评论
为什么被折叠?



