二叉树小结

 

===============================================================================================

二叉树的定义方式:

1.顺序表:

typedef struct SqTree{
    char data[maxsize];
    bool isNULL;
}SqTree;

2.链表

struct node{
    int val;
    struct node *lchild,*rchild;
    // int Ltag,Rtag;      // tag=0,指向孩子,tag=1。指向线索。线索二叉树
};

3.或者使用这种方式定义:

int Tree[35][2];

int deal(int i0,int i1,int pR){            
    if(i0>i1){
        return -1;     
    }
    int i = pos[pre[pR]];
    int Llen = i-i0; 
    int root = pR;
    Tree[root][0] = deal(i0,i-1,pR+1);
    Tree[root][1] = deal(i+1,i1,pR+Llen+1);
    return root;         
}

4.也可以定义为结构体:

struct tnode{
    int nodeid,lidx,ridx,level;
};

===============================================================================================

 树 这种数据类型在顺序存储、链式存储下的体系:

 

===================================================================================================

其他:

1. 完全二叉树用数组表示时下标一定要从1开始!!!

2. BST的中序序列是递增的。

3. 二叉树先序遍历需要借助栈,栈的入栈顺序就是先序序列、出栈顺序就是中序序列。

4.树的层次遍历和图的bfs、树和图的dfs类似(MST)

5.并查集是树的应用

6.快速排序类似树的先序遍历、归并排序类似树的后序遍历

7.回溯算法、动态规划的基础在于树的遍历

 

posted @ 2024-02-21 20:41  _titleInfo  阅读(5)  评论(0编辑  收藏  举报
//雪花飘落效果