无法实例化类型TreeNode 包com.cnu.ds.tree; 导入java.util.LinkedList; 导入java.util.Queue; 导入java.util.Stack; 公共类树{ 公共静态void main(字符串[]args){ TreeNode TreeNode=新的TreeNode(); t=1; treeNode.left=新的treeNode(); t=2; treeNode.right=新的treeNode(); 树节点。右。t=3; treeNode.left.left=新的treeNode(); treeNode.left.left.t=4; treeNode.left.right=新的treeNode(); 树节点。左。右。t=5; treeNode.right.left=新的treeNode(); 树节点。右。左。t=6; treeNode.right.right=新的treeNode(); treeNode.right.right.t=7; // ////////////////////// treeNode.left.left.left=新的treeNode(); treeNode.left.left.left.t=8; treeNode.left.left.right=新的treeNode(); 树节点。左。左。右。t=9; treeNode.left.right.left=新的treeNode(); 树节点。左。右。左。t=10; treeNode.left.right.right=新的treeNode(); 树节点。左。右。右。t=11; treeNode.right.left.left=新的treeNode(); 树节点。右。左。左。t=12; treeNode.right.left.right=新的treeNode(); 树节点。右。左。右。t=13; treeNode.right.right.left=新的treeNode(); 树节点。右。右。左。t=14; treeNode.right.right.right=新的treeNode(); treeNode.right.right.right.t=15; levelOrder(treeNode); levelOrderReverse(treeNode); } 公共静态void levelOrderReverse(TreeNode根目录){ 队列树节点=新链接列表(); TreeNode newRoot=根; 添加(根); treeNodes.add(null); 堆栈=新堆栈(); Queue Queue=new LinkedList(); 布尔翻转=假; 而(!treeNodes.isEmpty()){ root=treeNodes.remove(); if(root==null){ 如果(翻转){ 而(!queue.isEmpty()){ root=queue.remove(); int r=stack.pop(); int l=stack.pop(); root.left.t=r; root.right.t=l; } } 翻转=!翻转; if(treeNodes.isEmpty()){ 打破 } System.out.println(); treeNodes.add(null); }否则{ if(root.left!=null){ 添加(根.左); } if(null!=root.right){ treeNodes.add(root.right); } 如果(翻转){ 栈推(root.t); }否则{ 添加(根); } } } System.out.println(); levelOrder(newRoot); } 公共静态void levelOrder(TreeNode root){ 队列树节点=新链接列表(); 添加(根); treeNodes.add(null); Queue Queue=new LinkedList(); 而(!treeNodes.isEmpty()){ root=treeNodes.remove(); if(root==null){ if(treeNodes.isEmpty()){ 打破 } System.out.println(); treeNodes.add(null); }否则{ if(root.left!=null){ 添加(根.左); } if(null!=root.right){ treeNodes.add(root.right); } 添加(根); System.out.print(root.t+“”); } } } }

无法实例化类型TreeNode 包com.cnu.ds.tree; 导入java.util.LinkedList; 导入java.util.Queue; 导入java.util.Stack; 公共类树{ 公共静态void main(字符串[]args){ TreeNode TreeNode=新的TreeNode(); t=1; treeNode.left=新的treeNode(); t=2; treeNode.right=新的treeNode(); 树节点。右。t=3; treeNode.left.left=新的treeNode(); treeNode.left.left.t=4; treeNode.left.right=新的treeNode(); 树节点。左。右。t=5; treeNode.right.left=新的treeNode(); 树节点。右。左。t=6; treeNode.right.right=新的treeNode(); treeNode.right.right.t=7; // ////////////////////// treeNode.left.left.left=新的treeNode(); treeNode.left.left.left.t=8; treeNode.left.left.right=新的treeNode(); 树节点。左。左。右。t=9; treeNode.left.right.left=新的treeNode(); 树节点。左。右。左。t=10; treeNode.left.right.right=新的treeNode(); 树节点。左。右。右。t=11; treeNode.right.left.left=新的treeNode(); 树节点。右。左。左。t=12; treeNode.right.left.right=新的treeNode(); 树节点。右。左。右。t=13; treeNode.right.right.left=新的treeNode(); 树节点。右。右。左。t=14; treeNode.right.right.right=新的treeNode(); treeNode.right.right.right.t=15; levelOrder(treeNode); levelOrderReverse(treeNode); } 公共静态void levelOrderReverse(TreeNode根目录){ 队列树节点=新链接列表(); TreeNode newRoot=根; 添加(根); treeNodes.add(null); 堆栈=新堆栈(); Queue Queue=new LinkedList(); 布尔翻转=假; 而(!treeNodes.isEmpty()){ root=treeNodes.remove(); if(root==null){ 如果(翻转){ 而(!queue.isEmpty()){ root=queue.remove(); int r=stack.pop(); int l=stack.pop(); root.left.t=r; root.right.t=l; } } 翻转=!翻转; if(treeNodes.isEmpty()){ 打破 } System.out.println(); treeNodes.add(null); }否则{ if(root.left!=null){ 添加(根.左); } if(null!=root.right){ treeNodes.add(root.right); } 如果(翻转){ 栈推(root.t); }否则{ 添加(根); } } } System.out.println(); levelOrder(newRoot); } 公共静态void levelOrder(TreeNode root){ 队列树节点=新链接列表(); 添加(根); treeNodes.add(null); Queue Queue=new LinkedList(); 而(!treeNodes.isEmpty()){ root=treeNodes.remove(); if(root==null){ if(treeNodes.isEmpty()){ 打破 } System.out.println(); treeNodes.add(null); }否则{ if(root.left!=null){ 添加(根.左); } if(null!=root.right){ treeNodes.add(root.right); } 添加(根); System.out.print(root.t+“”); } } } },java,swing,collections,Java,Swing,Collections,输出: 1. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 一, 3 2 4 5 6 7 15141312111098 以上是网站中建议的以下问题的代码片段的一部分。 反转二叉树的备用级别节点。 A. / \ b c / \ / \ d e f g / \ / \ / \ / \ h i j k l m n o 修改树: A. / \ c b / \ / \ d e f g / \ / \ / \ / \ o n m l k j i h 最初我得到的错误

输出: 1. 2 3 4 5 6 7 8 9 10 11 12 13 14 15

一, 3 2 4 5 6 7 15141312111098

以上是网站中建议的以下问题的代码片段的一部分。 反转二叉树的备用级别节点。 A. / \ b c / \ / \ d e f g / \ / \ / \ / \ h i j k l m n o

修改树: A. / \ c b / \ / \ d e f g / \ / \ / \ / \ o n m l k j i h

最初我得到的错误是“TreeNode不能作为类型解析” 然后我导入了java.swing,之后我得到了一个错误“无法实例化类型TreeNode”


请建议您不能用
new
实例化
TreeNode
,因为
TreeNode
是一个实例。然而,你可以说:

package com.cnu.ds.tree;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Tree {
    public static void main(String[] args) {
        TreeNode treeNode = new TreeNode();
        treeNode.t = 1;
        treeNode.left = new TreeNode();
        treeNode.left.t = 2;
        treeNode.right = new TreeNode();
        treeNode.right.t = 3;
        treeNode.left.left = new TreeNode();
        treeNode.left.left.t = 4;
        treeNode.left.right = new TreeNode();
        treeNode.left.right.t = 5;
        treeNode.right.left = new TreeNode();
        treeNode.right.left.t = 6;
        treeNode.right.right = new TreeNode();
        treeNode.right.right.t = 7;
        // //////////////////////
        treeNode.left.left.left = new TreeNode();
        treeNode.left.left.left.t = 8;
        treeNode.left.left.right = new TreeNode();
        treeNode.left.left.right.t = 9;

        treeNode.left.right.left = new TreeNode();
        treeNode.left.right.left.t = 10;

        treeNode.left.right.right = new TreeNode();
        treeNode.left.right.right.t = 11;

        treeNode.right.left.left = new TreeNode();
        treeNode.right.left.left.t = 12;
        treeNode.right.left.right = new TreeNode();
        treeNode.right.left.right.t = 13;

        treeNode.right.right.left = new TreeNode();
        treeNode.right.right.left.t = 14;

        treeNode.right.right.right = new TreeNode();
        treeNode.right.right.right.t = 15;

        levelOrder(treeNode);
        levelOrderReverse(treeNode);
    }

    public static void levelOrderReverse(TreeNode root) {
        Queue<TreeNode> treeNodes = new LinkedList<>();
        TreeNode newRoot = root;
        treeNodes.add(root);
        treeNodes.add(null);
        Stack<Integer> stack = new Stack<>();
        Queue<TreeNode> queue = new LinkedList<>();
        boolean flip = false;
        while (!treeNodes.isEmpty()) {
            root = treeNodes.remove();
            if (root == null) {
                if (flip) {
                    while (!queue.isEmpty()) {
                        root = queue.remove();
                        int r = stack.pop();
                        int l = stack.pop();
                        root.left.t = r;
                        root.right.t = l;
                    }
                }
                flip = !flip;
                if (treeNodes.isEmpty()) {
                    break;
                }
                System.out.println();
                treeNodes.add(null);
            } else {
                if (root.left != null) {
                    treeNodes.add(root.left);
                }
                if (null != root.right) {
                    treeNodes.add(root.right);
                }
                if (flip) {
                    stack.push(root.t);
                } else {
                    queue.add(root);
                }
            }
        }
        System.out.println();
        levelOrder(newRoot);
    }

    public static void levelOrder(TreeNode root) {
        Queue<TreeNode> treeNodes = new LinkedList<>();
        treeNodes.add(root);
        treeNodes.add(null);
        Queue<TreeNode> queue = new LinkedList<>();
        while (!treeNodes.isEmpty()) {
            root = treeNodes.remove();
            if (root == null) {
                if (treeNodes.isEmpty()) {
                    break;
                }
                System.out.println();
                treeNodes.add(null);
            } else {
                if (root.left != null) {
                    treeNodes.add(root.left);
                }
                if (null != root.right) {
                    treeNodes.add(root.right);
                }
                queue.add(root);
                System.out.print(root.t + " ");
            }
        }
    }
}

其中
SomeClass
是一个实现
TreeNode
接口的类。

TreeNode是一个接口,不能使用新的运算符或关键字实例化接口。您可以使用TreeNode作为对象引用或句柄,但必须使用一些带有new关键字的实现类来创建实例。访问以了解更多有关TreeNode及其实现类的信息。

您不能实例化
接口
TreeNode
是一个只能实现或引用任何实现
TreeNode的类的接口。

尝试org.primefaces.model.DefaultTreeNode如下:

TreeNode node = new SomeClass();

此代码段取自下面的链接,他们甚至发布了输出。我理解它是一个接口,但是上面的程序是如何成功地返回所提到的输出的?/我这里遗漏了什么吗。
TreeNode root = new DefaultTreeNode("SomeID", null);