二叉树的链式结构---递归法(附一些有关二叉树的简单的leetcode题目)

0.前言

二叉树链式结构的遍历:
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。
示范:
在这里插入图片描述

1.前序遍历

  1. NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。
    图解:
    在这里插入图片描述
 // 二叉树前序遍历 
void BinaryTreePrevOrder(BTNode* root)
{
    
    
	if (root == NULL)
	{
    
    
		printf("NULL  ");
		return;
	}
	printf("%c\n", root->val);
	BinaryTreePrevOrder(root->left);
	BinaryTreePrevOrder(root->right);
}

2.中序遍历

  1. LNR:中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。
// 二叉树中序遍历
void BinaryTreeInOrder(BTNode* root)
{
    
    
	if (root == NULL)
	{
    
    
		printf("NULL  ");
		return;
	}
	BinaryTreePrevOrder(root->left);
	printf("%c\n", root->val);
	BinaryTreePrevOrder(root->right);
}

3.后序遍历

  1. LRN:后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。
void BinaryTreePostOrder(BTNode* root)
{
    
    
	if (root == NULL)
	{
    
    
		printf("NULL  ");
		return;
	}
	BinaryTreePrevOrder(root->left);
	BinaryTreePrevOrder(root->right);
	printf("%c\n", root->val);
}

4.层序遍历

  1. 层序遍历:除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。

求节点个数等其他接口

面试常考

给出两种遍历方式,用剩下的哪一种遍历方式表示二叉树。

猜你喜欢

转载自blog.csdn.net/Zhou000815/article/details/112727017