没有合适的资源?快使用搜索试试~ 我知道了~
java实现二叉树的Node节点定义手撕8种遍历(一遍过).doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 3 浏览量
2022-07-09
23:10:06
上传
评论
收藏 1.14MB DOC 举报
温馨提示
试读
17页
java实现二叉树的Node节点定义手撕8种遍历(一遍过).doc
资源推荐
资源详情
资源评论
java 实现二叉树的 Node 节点定义手撕 8 种遍历(一遍过)
java 实现二叉树的 Node 节点定义手撕 8 种遍历(一遍过)
用 java 的思想和程序从最基本的怎么将一个 int 型的数组变成 Node 树状结构说起,再到
递归前序遍历,递归中序遍历,递归后序遍历,非递归前序遍历,非递归前序遍历,非递归
前序遍历,到最后的广度优先遍历和深度优先遍历
1.Node 节点的 Java 实现
首先在可以看到打上 Node 这个字符串,就可以看到只能的 IDEA 系统提供的好多提示:
点进去看,却不是可以直接构成二叉树的 Node,不是我们需要的东西。这里举个例子来
看 org.w3c.dom
这里面的 Node 是一个接口,是解析 XML 时的文档树。在官方文档里面看出:
该 Node 接口是整个文档对象模型的主要数据类型。它表示该文档树中的单个节点。
当实现 Node 接口的所有对象公开处理子节点的方法时,不是实现 Node 接口的所有对
象都有子节点。
所以我们需要自定义一个 Node 类
package com.elloe.实现二叉树的 Node 节点.Node 的 Java 实现;
import java.util.LinkedList;
import java.util.Stack;
/**
* @author ElloeStudy(Sifa Zhang)
* @create 2022-04-09 13:04
* To: 真常应物,真常得性,常清常静,常清静矣
*
* 自定义 Node 的节点
*/
public class Node {
private int value; // 节点的值
private Node node; // 当前节点
private Node left; // 此节点的左节点,类型为 Node
private Node right; // 此节点的右节点,数据类型为 Node
public Node() {
}
public Node(int value) {
this.value = value;
this.left = null;
this.right = null;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getNode() {
return node;
}
public void setNode(Node node) {
this.node = node;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
@Override
public String toString(){
return this.value + “ “;
}
}
2.数组升华二叉树
一般拿到的数据是一个 int 型的数组,那怎么将这个数组变成我们可以直接操作的树结构
呢?
1、数组元素变 Node 类型节点
2、给 N/2-1 个节点设置子节点
3、给最后一个节点设置子节点【有可能只有左节点】
那现在就直接上代码:
public static void create(int[] datas, List list){
// 将数组的数装换为节点 Node
for (int i = 0; i
很细致的加上了很多的注释啊,所以保证一看就懂。
3.递归前序遍历
具体的原理没有什么好讲的,知道顺序即可
先序遍历过程:
(1)访问根节点;
(2)采用先序递归遍历左子树;
(3)采用先序递归遍历右子树;
这里用图来说明:
先序的结果:1 2 4 8 9 5 3 6 7
代码实现:
// 传入需要遍历的节点
public void preTraversal(Node node){
// 当遇到叶节点,停止向下遍历
if (node == null){
return;
}
// 相当于点前节点的根节点的值
System.out.print(node.getValue() + “ “);
// 先从底下依次遍历左节点
preTraversal(node.getLeft());
// 先从底下依次遍历右节点
preTraversal(node.getRight());
}
看,说了很简单的!
4.递归中序遍历
中序遍历:
(1)采用中序遍历左子树;
(2)访问根节点;
剩余16页未读,继续阅读
资源评论
书博教育
- 粉丝: 1
- 资源: 2836
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功