数据结构中的节点到底是啥?
很多人刚开始学习数据结构的时候,都有这种感觉,我看概念的话觉得都懂了,但是真的让我去实现,自己写代码的话就会感到无从下手。
这其实也是我们学习编程都会遇到的一个问题,就是我看视频或者看书觉得自己都可以看得懂啊,但是让自己写代码的话却写不出来,所以啊,你看的懂和能写出来完全是两码事。
所以啊,平常学习编程一定要多敲代码
很多人在接触链表也就是链式存储这块的时候,会迷惑这个节点咋表示啊,有点抽象啊,还有指针指向,这些看起来比较抽象,用代码?怎么搞啊?
就拿数据结构中的二叉搜索树来说吧,我们要实现它的很重要的一步就是要确定这个节点怎么表示啊,这个怎么搞啊,有点懵啊,我们先来看画图怎么表示的,比如这里有一个二叉搜索树:
你就比如这个,我们该怎么用代码表示呢?
节点该怎么表示
首先啊,你看,我们直观来看,是不是每个节点是一个数据,然后还有指针指向,就是那些箭头,所以最基本的一个节点包括:
数据元素
箭头(也就是指针,一个节点有两个)
简单来看是不是就是这些,要记住,这是节点包含这些内容,那么这个节点是一个整块的内容,该怎么表示,在java中不就可以使用一个类来表示嘛,也即是这样:
class Node {
}
然后就是包含的里面的东西,首先是数据,这个数据这里暂定为整型类型,然后我们在类里面定义这个数据元素:
class Node {
int element;
}
接下来就是数据指针的表示了,很多人会疑惑这个该怎么表示,你想啊,这个指针指向的不也是个节点嘛,这里的节点已经是个Node对象了,那么一个节点里面保存的指针不就是指向另外一个节点嘛,这不就是保存的另一个对象的引用地址嘛,所以我们可以直接在类里面声明节点对象,也即是这样:
class Node {
int element;
Node left;
Node right;
Node parent;
}
咋样,是不是看明白了,然后这里还需要记录一个父节点,因为后续的插入啥的要根据父节点来操作,然后我们还需要添加构造函数:
class Node {
int element;
Node left;
Node right;
Node parent;
public Node(int element,Node parent) {
this.element = element;
this.parent = parent;
}
}
如此一来,我们就表示了二叉搜索树的节点。
评论