《数据结构之树篇》--二叉树的链表实现
来源:互联网 发布:淘宝宝贝导出excel 编辑:程序博客网 时间:2024/06/07 07:06
--Node的头文件:
#pragma once#ifndef NODE_H_#define NODE_H_#include<iostream>using namespace std;class Node{public:Node();Node *SearchNode(int nodeIndex);void DeleteNode();void PreorderTraverse();void InorderTraverse();void PostorderTraverse();int index;int data;Node *pLChild;Node *pRChild;Node *pParent;};#endif // !NODE_H_
--Node的CPP文件:
#include "Node.h"Node::Node(){m_idata = 0;m_iIndex = 0;m_pLChild = NULL;m_pRChild = NULL;m_pParent = NULL;}Node * Node::SearchNode(int index){if (this->m_iIndex == index)return this;if (this->m_pLChild != NULL){if (this->m_pLChild->m_iIndex==index){return this->m_pLChild;}Node *temp = m_pLChild->SearchNode(index);if (temp != NULL)return temp;}if (this->m_pRChild != NULL){if (this->m_pRChild->m_iIndex == index){return this->m_pRChild;}Node *temp = m_pRChild->SearchNode(index);if (temp != NULL)return temp;}return NULL;}void Node::DeleteNode(){if (this->m_pLChild != NULL){this->m_pLChild->DeleteNode();}if (this->m_pRChild != NULL){this->m_pRChild->DeleteNode();}if (this->m_pParent != NULL){if (this->m_pParent->m_pLChild == this)this->m_pParent->m_pLChild = NULL;if (this->m_pParent->m_pRChild == this)this->m_pParent->m_pRChild = NULL;}delete this;}void Node::PreTraverse(){cout << this->m_idata << "(" << this->m_iIndex << ")" << endl;if (this->m_pLChild != NULL){this->m_pLChild->PreTraverse();}if (this->m_pRChild != NULL){this->m_pRChild->PreTraverse();}}void Node::InTraverse(){if (this->m_pLChild != NULL){this->m_pLChild->PreTraverse();}cout << this->m_idata << "(" << this->m_iIndex << ")" << endl;if (this->m_pRChild != NULL){this->m_pRChild->PreTraverse();}}void Node::ProTraverse(){if (this->m_pLChild != NULL){this->m_pLChild->PreTraverse();}if (this->m_pRChild != NULL){this->m_pRChild->PreTraverse();}cout << this->m_idata << "(" << this->m_iIndex << ")" << endl;}
--Tree的头文件:
#pragma once#ifndef TREE_H_#define TREE_H_#include"Node.h"#include<stdlib.h>using namespace std;class Tree{public:Tree();~Tree();Node* SearchNode(int index);bool AddNode(int index, bool direction, Node *pNode);bool DeleteNode(int index, Node *pNode);void PreTraverse();void InTraverse();void ProTraverse();private:Node* m_pRoot;};#endif // !TREE_H_
--Tree的CPP文件:
#include "Tree.h"Tree::Tree(){m_pRoot = new Node;}Tree::~Tree(){DeleteNode(0, NULL);}Node * Tree::SearchNode(int index){return m_pRoot->SearchNode(index);}bool Tree::AddNode(int index, bool direction, Node * pNode){Node *temp = SearchNode(index);if (temp == NULL)return false;Node *node = new Node;node->m_idata = pNode->m_idata;node->m_iIndex = pNode->m_iIndex;node->m_pParent = temp;if (direction == true){if (temp->m_pLChild != NULL)return false;temp->m_pLChild = node;}else{if (temp->m_pRChild != NULL)return false;temp->m_pRChild = node;}return true;}bool Tree::DeleteNode(int index, Node * pNode){Node *temp = SearchNode(index);if (temp == NULL){return false;}if (pNode != NULL){pNode->m_idata = temp->m_idata;}temp->DeleteNode();return true;}void Tree::PreTraverse(){m_pRoot->PreTraverse();}void Tree::InTraverse(){m_pRoot->InTraverse();}void Tree::ProTraverse(){m_pRoot->ProTraverse();}
0 1
- 《数据结构之树篇》--二叉树的链表实现
- 简单数据结构的实现之二叉树
- 【数据结构】之二叉树的java实现
- 【数据结构】之二叉树的java实现
- 数据结构之二叉树的Java实现
- 【数据结构】之二叉树的java实现
- 【数据结构】之二叉树的java实现
- 【数据结构】之二叉树的java实现
- 【数据结构】之二叉树的java实现
- Java数据结构之二叉树的实现
- 数据结构之二叉树的Java实现
- 数据结构之二叉树的递归实现
- 数据结构之二叉树的实现
- 【数据结构】之二叉树的java实现
- 数据结构 --- Java之二叉树的实现
- 【数据结构】之二叉树的java实现
- 数据结构之---C语言实现二叉树的二叉链表存储表示
- [数据结构]二叉树之二叉链表的类模板实现
- 【软考】设计模式-原型模式
- 浙江省赛 C What Kind of Friends Are You?
- 二叉树的路径和
- ZOJ 142
- header 跳转
- 《数据结构之树篇》--二叉树的链表实现
- cut工具
- Java实现数据结构--栈
- java 中常见的几种算法,解释很详细
- 19.嵌套的监控程序锁死
- hdu4497——GCD and LCM(数论&容斥原理or排列组合)
- MyBatis_5
- What Kind of Friends Are You?
- mini2440实验,用key控制led