这里写目录标题
- 二叉树的基础知识
-
- 知识点一
- (二叉树性质 )
- 树与二叉树的相互转换
- 二叉树的遍历
- 层次优先遍历
- 树的深度和广度优先遍历
- 中序线索二叉树
- 二叉树相关遍历代码
-
- 顺序存储和链式存储
- 二叉树的遍历
- 二叉树的相关例题
-
- 左右两边表达式求值
- 求树的深度
- 找数
- 找第k个数
- 二叉树非递归遍历代码
-
- 二叉树的层次优先遍历
- 二叉树非递归前序中序后续遍历
二叉树的基础知识
知识点一
(二叉树性质 )
树与二叉树的相互转换
二叉树的遍历
层次优先遍历
树的深度和广度优先遍历
中序线索二叉树
二叉树相关遍历代码
顺序存储和链式存储
typedef struct Branch//顺序存储结构
{
int cldx;
Branch* next;
}Branch;
typedef struct
{
int data;
Branch* first;
}Tnode;
链式存储结构
二叉树的链式存储结构
typedef struct BTnode
{
char data;
struct BTnode* lchild;
struct BTnode* rchild;
}BTnode;
二叉树的遍历
void xianxubianli(BTnode* p)
{
if (p != NULL)
{
visit(p);
xianxubianli(p->lchild);
xianxubianli(p->lchild);
}
}
递归进行中序遍历
void zhongxubainli(BTnode* p)
{
if (p != NULL)
{
zhongxubainli(p->lchild);
visit(p);
zhongxubianli(p->rchild);
}
}BTnode*p
后序遍历进行递归操作
void houxubianli(BTnode* bt)
{
if (p != NULL)
{
houxubianli(p->lchild);
houxubianli(p->rchild);
visit(p);
}
}
二叉树的相关例题
左右两边表达式求值
int comp(BTnode* p)
{
int A, B;
if (p != NULL)
{
if (p->lchikd != NULL && p->rchild != NULL)
{
A = comp(p->lchild);//这个是不断的求左边的树,一直到不行的时候,然后返回,
//到上一个根的右边的树,然后看看求右边的树的值,并且也是递归,求右边树的数据的问题,
//然后分别不断的求出左右两边的值,然后一起进行ji算
B = comp(p->rchild);
return op(A, B, p->data);//这个是求的是树左右两边的数据的求值
}
else
return p->data - '0'<