专题知识点-二叉树-(非常有意义的一篇文章)

这里写目录标题

  • 二叉树的基础知识
    • 知识点一
    • (二叉树性质 )
    • 树与二叉树的相互转换
    • 二叉树的遍历
    • 层次优先遍历
    • 树的深度和广度优先遍历
    • 中序线索二叉树
  • 二叉树相关遍历代码
    • 顺序存储和链式存储
    • 二叉树的遍历
  • 二叉树的相关例题
    • 左右两边表达式求值
    • 求树的深度
    • 找数
    • 找第k个数
  • 二叉树非递归遍历代码
    • 二叉树的层次优先遍历
    • 二叉树非递归前序中序后续遍历

二叉树的基础知识

知识点一

专题知识点-二叉树-(非常有意义的一篇文章)_第1张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第2张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第3张图片

(二叉树性质 )

专题知识点-二叉树-(非常有意义的一篇文章)_第4张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第5张图片

树与二叉树的相互转换

专题知识点-二叉树-(非常有意义的一篇文章)_第6张图片

二叉树的遍历

专题知识点-二叉树-(非常有意义的一篇文章)_第7张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第8张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第9张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第10张图片

层次优先遍历

专题知识点-二叉树-(非常有意义的一篇文章)_第11张图片

树的深度和广度优先遍历

专题知识点-二叉树-(非常有意义的一篇文章)_第12张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第13张图片

中序线索二叉树

专题知识点-二叉树-(非常有意义的一篇文章)_第14张图片
专题知识点-二叉树-(非常有意义的一篇文章)_第15张图片

二叉树相关遍历代码

顺序存储和链式存储

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);  
	}
}

二叉树的相关例题

左右两边表达式求值

专题知识点-二叉树-(非常有意义的一篇文章)_第16张图片

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'<

你可能感兴趣的:(#,算法专题,算法)