树,森林知识点

2 篇文章 0 订阅
1 篇文章 0 订阅

树、森林

树的存储结构

双亲表示法(顺序 存储)

每个节点中保存指向双亲的指针

#define MAX_TREE_SIZE 100   //树中最多的节点数
//树的结点定义
typedef struct {
    ElemType data;		//数据元素
    int parent;			//双亲位置域
}PTNode;
//树的类型定义
typedef struct{
    PTNode nodes[MAX_TREE_SIZE];		//双亲表示
    int n;			//结点数
}PTree; 

孩子表示法(顺序存储+链式存储)

struct CTNode{
    int child;		//孩子结点在数组中的位置
    struct CTNode *next;		//下一个孩子
};
typedef struct {
	ElemType data;
    struct CTNode *firstChild;		//第一个孩子
    
}CTBox;

typedef struct {
    CTBox nodes[[MAX_TREE_SIZE];
    int n,r;		//结点数和根的位置
}CTree;
                

孩子兄弟表示法(二叉树表示法–链式)

typedef struct CSNode{
    ElemType data;			//数据域
    struct CSNode *firstchild,*nextsibling;		//第一个孩子和右兄弟指针
}CSNode,*CSTree;


树、森林的遍历

树的遍历

先根遍历(深度优先遍历)

方式:若树非空,先访问根结点,再依次对每颗子树进行先根遍历

void PreOrder(TreeNode *R){
    if(R!=NULL){
        visit(R);			//访问根结点
        while(R还有下一颗子树T){
            PreOrder(T);			//先根遍历下一棵子树	
        }
    }
}

结论:对树的先根遍历与将该树转化为二叉树进行先序遍历一样

后根遍历(深度优先遍历)

方式:若树非空,先依次对每颗子树进行后根遍历,最后再访问根结点

void PostOrder(TreeNode *R){
    if(R!=NULL){
        while(R还有下一个子树T){
            PostOrder(T);
        }
        visit(R);		//访问根结点
    }
}

结论:对树的后根遍历与将该树转化为二叉树进行中序遍历一样

层次遍历(广度优先遍历)

队列实现,与二叉树的层次遍历一致

森林的遍历

先序遍历

森林是m(m>0)棵互不相交的树的集合。每棵树去掉根节点后,其余个子树又组成森林。

方式:

(1)若森林非空,访问森中第一颗树的根节点

(2)先序遍历第一颗树中根结点的子树森林。

(3)先序遍历除去第一棵树之后剩余的树构成的森林

结论:对森林的先序遍历与将该树转化为二叉树进行先序遍历一样

中序遍历

方式:

(1)中序遍历第一颗树中根结点的子树森林。

(2)访问第一颗树的根节点

(3)中序遍历除去第一棵树之后剩余的树构成的森林

结论:对森林的中序遍历与将该树转化为二叉树进行中序遍历一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K3Ridlxo-1627293608272)(C:\Users\25720\AppData\Roaming\Typora\typora-user-images\image-20210723170258729.png)]

习题

1.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SO21pW0w-1627293608277)(C:\Users\25720\AppData\Roaming\Typora\typora-user-images\image-20210723175106931.png)]

2.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VIftibMK-1627293608280)(C:\Users\25720\AppData\Roaming\Typora\typora-user-images\image-20210723180006731.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HoQ6KfxF-1627293608283)(C:\Users\25720\AppData\Roaming\Typora\typora-user-images\image-20210723180156325.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U9nw646u-1627293608286)(C:\Users\25720\AppData\Roaming\Typora\typora-user-images\image-20210723180346312.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值