二叉树的创建及成员函数的实现

本文实现了二叉树的创建及其成员函数的实现成员函数包括:1)构造函数2)拷贝构造函数3)赋值运算符重载4)先序遍历(先根遍历)5)中序遍历6)后序遍历(后根遍历)7)层序遍历8)节点个数9)叶子节点个数10)二叉树深度二叉树的实现:#pragma once#include#include#includeusing namespac
摘要由CSDN通过智能技术生成

本文实现了二叉树的创建及其成员函数的实现

成员函数包括:

1)构造函数

2)拷贝构造函数

3)赋值运算符重载

4)先序遍历(先根遍历)(递归与非递归)

5)中序遍历(递归与非递归)

6)后序遍历(后根遍历)(递归与非递归)

7)层序遍历

8)节点个数

9)叶子节点个数

10)二叉树深度

11)查找二叉树节点

12)第k层节点的个数(两种方法)


二叉树的实现:

#pragma once

#include<iostream>
#include<assert.h>
#include<queue>
#include<stack>
using namespace std;

template<class T>
struct BinaryTreeNode
{
	BinaryTreeNode(const T& d)
	:_data(d)
	,_left(NULL)
	,_right(NULL)
	{
	}
	T _data;//数据
	BinaryTreeNode<T>* _left;//左孩子
	BinaryTreeNode<T>* _right;//右孩子
};

template<class T>
class BinaryTree
{
	typedef BinaryTreeNode<T> Node;
public:
	BinaryTree(const T *a, const T& invalid, size_t size)//创建二叉树  invalid表示没有值(左孩子或右孩子为空)
		:_root(NULL)
	{
		size_t index = 0;
		_root = _CreatBinaryTree(a, invalid, size, index);//实现递归调用
	}
	BinaryTree()//默认构造函数
		:_root(NULL)
	{}
	BinaryTree(const BinaryTree<T>& t)
		:_root(NULL)
	{
		_root=_CopTree(t._root);
	}
	BinaryTree<T>& operator=(const BinaryTree<T>& t)
	{
		if (this != &t)
		{
			Node* root = _CopTree(t._root);
			Destry(_root);
			_root = root;
		}
		return *this;
	}
	~BinaryTree()
	{
		Destry(_root);
	}
public:
	Node* _CopTree(Node* root)
	{
		Node* head=NULL;

		if (root)
		{
			head = new Node(root->_data);
			head->_left = _CopTree(root->_left);
			head->_right = _CopTree(root->_right);
		}
		return head;
	}
	//void PreOrder()//递归实现先序遍历
	//{
	//	_PreOrder(_root);
	//	cout << endl;
	//}
	//void InOrder()//递归实现中
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值