这里写目录标题
- 二叉树的基础知识
- 知识点一
- (二叉树性质 )
- 树与二叉树的相互转换
- 二叉树的遍历
- 层次优先遍历
- 树的深度和广度优先遍历
- 中序线索二叉树
- 二叉树相关遍历代码
- 顺序存储和链式存储
- 二叉树的遍历
- 二叉树的相关例题
- 左右两边表达式求值
- 求树的深度
- 找数
- 找第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);//这个是求的是树左右两边的数据的求值}elsereturn p->data - '0'<