尚硅谷Java数据结构--线索化二叉树

 出现空指针异常(先记录一下)

(希望大佬能够指出是哪里出了问题)

package DataStructure;/*** Created with IntelliJ IDEA.* Description:* User: 86178* Date: 2024-03-05* Time: 10:39*/
public class ThreadedBinaryTreeDemo {public static void main(String[] args) {Node n3=new Node(8);Node n4=new Node(10);Node n5=new Node(14);Node n1=new Node(3,n3,n4);Node n2=new Node(6,n5,null);Node root=new Node(1,n1,n2);BinaryTree tree=new BinaryTree();tree.setRoot(root);tree.threadedNodes();System.out.println(n3);System.out.println(n4);System.out.println(n5);//System.out.println(n2);//tree.infixOrder(root);}
}class Node {public int val;public Node left;public Node right;//todo leftType==0 左子树 1 前驱节点public int leftType;public int rightType;public Node() {}public Node(int val) {this.val = val;}public Node(int val, Node left, Node right) {this.val = val;this.left = left;this.right = right;}public String toString() {return "Node.val=" + this.val+" leftVal="+this.left.val+" rightVal="+this.right.val;}
}//todo 定义二叉树
class BinaryTree {private Node root;public Node pre=null;//指向前驱节点public Node post=null;public void setRoot(Node root) {this.root = root;}public void infixOrder(Node node){if(node==null) return ;if(node.left!=null) infixOrder(node.left);System.out.println(node);if(node.right!=null) infixOrder(node.right);}//进行重载 使代码简洁public void threadedNodes(){this.threadedNodes(root);}//中序线索化二叉树public void threadedNodes(Node node) {if (node == null) return;//左子树if (node!=null && node.left != null) threadedNodes(node.left);//父节点if (node!=null && node.leftType == 0 && node.left==null){//指向前驱节点node.left=pre;node.leftType=1;}if(pre!=null && pre.rightType==0 && pre.right==null){//指向后继结点//让前驱节点的右指针指向当前节点// todo 前驱节点和后继结点是一对相对的概念pre.right=node;pre.rightType=1;}pre=node;//右子树if (node.right != null) threadedNodes(node.right);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511773.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯-单片机组基础7-存储器映射扩展与PWM脉冲调制(附小蜜蜂课程代码)

蓝桥杯单片机组备赛指南请查看这篇文章:戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写,代码可直接在比赛开发板上使用。 型号:国信天长4T开发板(绿板),芯片:IAP15F2K6…

备战蓝桥杯---图论应用1

目录 1.增加虚点建图: 2.抽象图的迪杰斯特拉: 3.用bitset优化弗洛伊德: 4.有向图的Prim/kruskal: 1.增加虚点建图: 我们当然可以每一层与上一层的点再连上一条边,但这样子边太多了超内存,我们…

【格与代数系统】偏序关系、偏序集与全序集

关系:X,Y是两个非空集合, 记若则称R是X到Y的一个二元关系,简称关系。 若,记。 当时,称是上的一个关系。 目录 偏序关系 偏序集 可比性 全序集 最值与上下界 上下确界 偏序关系 设是上的一个关系,若满足: (1)自…

springboot+bootstrap+jsp校园二手书交易平台mlg86

考虑到实际生活中在校园二手书交易系统方面的需要以及对该系统认真的分析,将系统权限按管理员和学生这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有个人中心、学生管理、图书类型管理、二手图书管理、通知公告管理、管理员管理、用户留言、系统…

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、配置小程序分包 分包可以减少小程序首次启动时的加载时间 为此&#…

idea中引入新JDK环境

在不同的项目中往往会需要不同的运行环境,那么如何下载一个新的环境并运用到idea中呢? 下面给出的就是oracle官网,以JDK17为例教大家如何下载 Java Archive Downloads - GraalVM for JDK 17https://www.oracle.com/java/technologies/javase…

钉钉h5应用 环境报错Error: Do not support the current environment:notInDingTalk

钉钉h5应用 环境报错 Error: Do not support the current environment:notInDingTalk problem Error: Do not support the current environment:notInDingTalk reason 前端页面运行在普通浏览器 solution 需要将h5页面在后台发布后,在钉…

CodeFlying 和 aixcoder两大免费软开平台,孰强孰弱?

今天为大家带来码上飞CodeFlying和aixcoder两款免费的软件开发平台效果的测评 一、产品介绍 首先简单介绍一下这两个平台 码上飞CodeFlying:码上飞 CodeFlying | AI 智能软件开发平台! 是一款革命性的软件开发平台,它通过将软件工程和大模…

CSS变量和@property

CSS变量 var() CSS 变量是由CSS作者定义的实体,其中包含要在整个文档中重复使用的特定值。使用自定义属性来设置变量名,并使用特定的 var() 来访问。(比如 color: var(--main-color);)。 基本用法 CSS变量定义的作用域只在定义该…

白银期货开户交割规则有哪些?

白银期货交割是指期货合约到期时,交易双方通过该期货合约所载商品所有权的转移,了结到期未平仓合约的过程。小编在此为大家详细介绍白银期货的交割规则有哪些。白银期货的交割规则有哪些?白银期货的交割规则主要有: 一、交割商品…

nodejs,JSDOM 补 window环境

window[atob] 是一个在浏览器中使用的 JavaScript 函数,用于将 base64 编码的字符串解码为原始数据。具体来说,atob 函数会将 base64 字符串解码为一个 DOMString,其中包含解码后的二进制数据。这在处理从服务器获取的 base64 编码的数据或在…

2024 中国(南京)国际口腔设备器械博览会

2024 中国(南京)国际口腔设备器械博览会 时间:2024 年 7 月 18-20 日 地点:南京国际展览中心 主办单位: 南京民营口腔医疗协会 北京铭曼国际展览有限公司 承办单位: 北京铭曼国际展览有限公司 展会介绍 随着人类社会的不断进步和…