关于树部分学习总结(二叉树三种遍历的简单实现)

这篇博客总结了二叉树的三种遍历方法:先序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。详细介绍了递归和非递归两种实现方式,并通过实例解释了遍历过程。
摘要由CSDN通过智能技术生成

前言

在这里插入图片描述
在这里插入图片描述

二叉树的抽象数据类型定义

类型名称:二叉树
数据对象集:一个有穷的结点集合。
若不为空,则由根结点和其左、右二叉子树组成。
操作集:BT∈BinTree, Item∈ElementType,重要操作有:

  1. Boolean IsEmpty( BinTree BT ):判别BT是 否为空;
  2. void Traversal( BinTree BT):遍历,按某顺序访问每个结点;
  3. BinTree CreatBinTree():创建一个二叉树。

常用的遍历方法有:

  1. void PreOrderTraversal( BinTree BT):先序—根、 左子树、右子树;
  2. void InOrderTraversal( BinTree BT ):中序–左子树、根、右子树;
  3. void PostOrderTraversal( BinTree BT):后序–左子树、右子树、根
  4. void LevelOrderTraversal( BinTree BT):层次遍历,从上到下、从左到右

二叉树的遍历

(1)先序遍历

遍历过程为:
①访问根结点;
先序遍历其左子树;
先序遍历其右子树

例如下图
例如上图
A (BDFE) (CGHI)
先序遍历=> A B D F E C G H I

递归实现先序遍历
#include<bits/stdc++.h>
using namespace std;

struct BinTree {
   
	int Data;
	struct BinTree* Left;
	struct BinTree* Right;
};
void PreOrderTraversal(BinTree* BT) {
   
	if (BT) {
   
		cout << BT->Data << endl;
		PreOrderTraversal(BT->Left);
		PreOrderTraversal(BT->Right);
	}
}
先序遍历非递归遍历算法

➢遇到一个结点,把它记住并弹出,再去遍历它的左子树;
➢当左子树遍历结束后,从记住的结点去访问并遍历它的右子树;

void PreOrderTraversal
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值