2023年10月11日

144-11

摘要: 给定二叉树,删除结点值为x的左右子树 利用层次遍历找到结点值为x的左右子树,分别删除; 删除算法 void Delete(Tree &T) { if(T) { Delete(T->lchild); Delete(T->rchild); free(T); } } 完整算法 #include <stdi 阅读全文

posted @ 2023-10-11 22:03 四马路弗洛伊德 阅读(38) 评论(0) 推荐(0)

144-10 感觉有点难

摘要: 二叉树使用二叉链表存储,求先序序列中第k个结点的值 首先明确先序遍历是根-左-右,使用递归算法,先左子树,后右子树。 为了防止在找到第k个结点之前就进入右子树的遍历,可以在递归调用时,将左子树的返回值存储在一个变量中,并进行判断。 如果左子树的返回值不等于特定的值(例如-1),则表示已经找到第k个结 阅读全文

posted @ 2023-10-11 21:42 四马路弗洛伊德 阅读(16) 评论(0) 推荐(0)

144-9

摘要: 链式存储的二叉树,交换左右结点位置 递归 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct node{ int data; struct node *lchild,*rchild; }TreeNode, 阅读全文

posted @ 2023-10-11 20:55 四马路弗洛伊德 阅读(15) 评论(0) 推荐(0)

143-8

摘要: 二叉树采用二叉链表存储,计算给定二叉树的所有双分支结点个数 递归思想 当根结点不存在左右结点时,return 0; 当根节点存在左右结点时,return Count(T->lchild)+Count(T->rchild)+1; 当根节点只存在一个结点时,return Count(T->lchild) 阅读全文

posted @ 2023-10-11 20:47 四马路弗洛伊德 阅读(17) 评论(0) 推荐(0)

143-7

摘要: 树结点由二叉链表存储,判定给定的树是否是完全二叉树 用到了辅助队列 只要出队的结点非空,就将其左右结点入队,无论左右结点是否为空。 若出队的结点为空,就让队列结点依次出队,若存在非空结点,就说明树不是完全二叉树。 #include <stdio.h> #include <stdlib.h> #def 阅读全文

posted @ 2023-10-11 20:28 四马路弗洛伊德 阅读(12) 评论(0) 推荐(0)

导航