二叉树的基本操作C++

这篇博客探讨了如何使用C++进行二叉树的基本操作,特别是聚焦于计算二叉树中所有节点的数量。通过递归的方法,详细解释了如何遍历树并有效地统计节点数。
摘要由CSDN通过智能技术生成
二叉树实现
1.创建二叉树
2.递归输出二叉树
2.1递归先序输出
2.2递归中序输出
2.3递归后序输出
3.非递归输出
3.1非递归先序输出
3.2非递归中序输出
3.3非递归后序输出
4.层次遍历二叉树
5.求树高
6.求树叶子节点
7.按值查找对应节点,输出左孩子结点值和右孩子结点值

8.计算所有节点数

/*
二叉树实现
	1.创建二叉树
	2.递归输出二叉树
		2.1递归先序输出
		2.2递归中序输出
		2.3递归后序输出
	3.非递归输出
		3.1非递归先序输出
		3.2非递归中序输出
		3.3非递归后序输出
	4.层次遍历二叉树
	5.求树高
	6.求树叶子节点
	7.按值查找对应节点,输出左孩子结点值和右孩子结点值
	8.计算所有节点数
*/
#include<iostream>
#include<string>
#include<stack>
#include<deque>
#include<fstream>
using namespace std;

//const int MAX_N = 100;
//数据节点
class Node
{
public:
	char data;//数据
	class Node *lchild;//左节点
	class Node *rchild;//右节点
};

//二叉树
class Tree
{
public:
	Tree(){}
	~Tree(){}

	//构建二叉树
	void Create(string name)
	{
		ifstream readfile;
		string str;
		readfile.open(name);
		if (readfile.is_open())
		{
			getline(readfile, str);//读取一行
		}
		readfile.close();
		CreateNode(str);//构建二叉树
	}


	//先序遍历非递归算法
	void Disp()
	{
		if (t == NULL)
		{
			return;
		}
		stack<Node *> m_stack;//定义栈
		m_stack.push(t);
		while (!m_stack.empty())
		{
			Node *p = m_stack.top();//赋值一份当前双亲节点
			cout << p->data << ends;
			m_stack.pop();
			if (p->rchild)//先存储右子树,确保先输出左子树
			{
				m_stack.push(p->rchild)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值