出现空指针异常(先记录一下)
(希望大佬能够指出是哪里出了问题)
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);}
}