二叉树 简单实现 问题解决

原创 2015年11月21日 15:52:00

耽搁了好长时间,今天终于把问题解决了。

之前没有完成 查找父结点的功能 在同学帮助下找到了原因。

首先,是两个我的错误想法,应该是

1.树的一个结点的值为NULL,表示这个节点不存在,或者是一个空节点,没有左、右子树,没有数据,什么都没有

2.两个结点相等,必须是数据、左右子树都一样才可以,只有数据相等是不可以的

之前已经说了,总是找不到父结点,是因为我比较的一直是两个结点是否相等,而不是两个结点的数据相等,这样当然找不到了

这次修改就是把原来的比较结点换成了比较节点的数据,加了一层if来控制一种特殊情况:如果某个结点的左子结点为空,却去让它的左子结点的数据赋给某个变量

原来的代码就不贴了,贴一下更改的寻找父结点的函数:

BinTreeNode* BinTree::Father(BinTreeNode *t, BinTreeNode *p) {   //寻找父结点,t为根节点,p为要寻找结点
	BinTreeNode *q;
	if (t == NULL || p == NULL)return NULL;
	//若t为p的父结点,则返回t
	if (t->GetLeft() != NULL)                    //判断特殊情况<span style="display: none; width: 0px; height: 0px;" id="transmark"></span>
		if ((t->GetLeft())->GetData() == p->GetData())
			return t;
	if (t->GetRight() != NULL)
		if ((t->GetRight())->GetData() == p->GetData())
			return t;
	//否则分别在t的左右子树寻找
	if ((q = Father(t->GetLeft(), p)) != NULL) return q;
	else return Father(t->GetRight(), p);
}
好的,就是这样。

C++ 简单二叉树实现

c++ 简单二叉树实现 基本的构造,先序、中序、后序遍历功能。#ifndef BINTREE_H #define BINTREE_H#include using namespace std; ty...
  • chenxl929
  • chenxl929
  • 2017年03月30日 17:55
  • 205

简单实现二叉树

简单的实现一个二叉树所需要的基本要求,后续进行其他的更新。二叉树最重要的是递归的思想,在这里我想请你去参考我上一篇的广义表,那个思想比起二叉树来说更加简单一些。#define _CRT_SECURE_...
  • qq_26768741
  • qq_26768741
  • 2016年09月26日 14:10
  • 932

二叉树简单实现

// ChainTree.cpp : Defines the entry point for the console application. // #include "stdafx.h" #inc...
  • singebogo
  • singebogo
  • 2017年10月19日 21:34
  • 33

二叉树的顺序存储结构的C++实现

本以为二叉树的顺序存储结构实现非常简单,类似于线性表,而在实际操作当中遇到了一些小问题,首先是如何判别树节点是否为空,我采用的方法初始化数组值为-111,新插入的节点覆盖初始值,而没有覆盖初始值的则认...
  • Alex123980
  • Alex123980
  • 2016年06月01日 20:14
  • 2233

二叉树非递归遍历之简单实现

二叉树作为一个常见数据结构,就不细说其具体结构了(不知道先面壁去:)),在实际工作中很常见,在面试过程中也会经常被涉及到,一些排序算法的基础也是二叉树。 二叉树的遍历,一般实现方法是用递归,算法逻辑...
  • shenlongqing
  • shenlongqing
  • 2015年01月08日 22:59
  • 285

记录一笔-二叉树简单实现

1.定义类型 2.先序 中序 后序 #include #include struct BTNode { int data;//数据域 struct BTNode * pLChild; //...
  • yingzhuyuanlei
  • yingzhuyuanlei
  • 2016年08月19日 14:37
  • 175

有关二叉树的简单实现

#include #include #include using namespace std; template struct BinaryTreeNode {                 Bi...
  • ljy_home
  • ljy_home
  • 2016年06月17日 18:37
  • 86

二叉树简单实现(未完成)

二叉树的代码更让人无语,我都不知道是哪儿错了。 1. 一开始遇到的问题是怎么才能够创建一棵二叉树呢,是按什么顺序输入的呢,问题就在这儿,是怎么输入的呢?先根遍历的序列,中根?后根?都不对,因为都没办...
  • xuqi7
  • xuqi7
  • 2015年11月21日 15:55
  • 300

【c++】简单实现二叉树

#include #include using namespace std; template struct BinTreeNode//二叉树的节点 { BinTreeNode(const T& d...
  • flowing_wind
  • flowing_wind
  • 2017年12月04日 23:51
  • 14

二叉树的C++简单实现

二叉树的C++简单实现 #include using namespace std; /* 存在的问题: ** 1.拷贝构造,赋值 ** 2.find函数返回指针,公开的find函数让其...
  • yang_teng_
  • yang_teng_
  • 2016年12月06日 20:50
  • 182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树 简单实现 问题解决
举报原因:
原因补充:

(最多只允许输入30个字)