[英]Cannot instantiate the type 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 + " ");
}
}
}
}
輸出:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 3 2 4 5 6 7 15 14 13 12 11 10 9 8
以上是網站中建議的以下問題的代碼片段的一部分。 反轉二叉樹的交替級別節點。 a / \\ bc / \\ / \\ defg / \\ / \\ / \\ / \\ hijklmno
修改樹:a / \\ cb / \\ / \\ defg / \\ / \\ / \\ / \\ onmlkjih
最初我得到的錯誤是“TreeNode 不能被解析為一種類型”然后我導入了 java.swing 之后我得到了錯誤“無法實例化類型 TreeNode”
請建議
你不能用new
實例化TreeNode
,因為TreeNode
是一個interface 。 不過你可以說:
TreeNode node = new SomeClass();
其中SomeClass
是實現TreeNode
接口的類。
TreeNode 是一個接口,永遠不能使用 new 運算符或關鍵字實例化接口。 您可以使用 TreeNode 作為對象引用或句柄,但您必須使用一些帶有 new 關鍵字的實現類來創建實例。 訪問此處了解有關 TreeNode 及其實現類的更多信息。
您無法實例化interface
。 TreeNode
是一個只能被實現或引用到任何實現TreeNode
類的接口。
像這樣嘗試 org.primefaces.model.DefaultTreeNode:
TreeNode root = new DefaultTreeNode("SomeID", null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.