- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是java初学者..我刚刚开始在线学习数据结构。我想按升序打印添加到二叉树中的值。
我创建了一个方法 print 并尝试使用以下值:
9,5,2,8,3
它打印了这个输出并停止了
2 , 3 ,8
节点必须有构造函数:
Constructor 1
public Node(int value){
this.Value=value;
isEmpty=false;
this.left=new Node();
this.right=new Node();
}
Constructor 2
public Node(){
isEmpty=true;
}
The Adding method :
public void add(int value) {
if (Objects.isNull(root)) {
root = new Node(value);
root.isEmpty = false;
}
Node current = root;
while (true) {
if (value < current.Value) {
if (current.left.isEmpty) {
current.left.prev = current;
current = current.left;
current.Value = value;
current.isEmpty = false;
current.left = new Node();
current.right = new Node();
break;
} else {
current = current.left;
}
} else {
if (current.right.isEmpty) {
current.right.prev = current;
current = current.right;
current.Value = value;
current.isEmpty = false;
current.left = new Node();
current.right = new Node();
break;
} else {
current = current.right;
}
}
}
}
The Print method
ArrayList<Node> list = new ArrayList();
Node current = root;while(true){
if(!current.left.isEmpty ){
if(!list.contains(current.left)){
current=current.left;
continue;
}
} else {
System.out.println(current.Value);
list.add(current);
if(!current.right.isEmpty && !list.contains(current.right)){
current=current.right;
continue;
}
current=current.prev.prev;
}
最佳答案
要打印 BST 中的数据,您需要进行中序遍历。对于二叉搜索树 (BST),中序遍历以非降序给出节点。要以非递增顺序获取 BST 的节点,可以使用中序遍历的变体,其中中序遍历相反。
Algorithm Inorder(tree) 1. Traverse the left subtree, i.e., call Inorder(left-subtree) 2. Visit the root. 3. Traverse the right subtree, i.e., call Inorder(right-subtree)
/* Given a binary tree, print its nodes in inorder*/
void printInorder(Node node)
{
if (node == null)
return;
/* first recur on left child */
printInorder(node.left);
/* then print the data of node */
if(!node.isEmpty){
System.out.print(node.value+ " ");
}
/* now recur on right child */
printInorder(node.right);
}
时间复杂度:O(n)
<小时/><小时/>如果树不是 BST。您可以创建列表并将树的值写入列表中并按升序对列表进行排序。
List<Integer> treeValues = new ArrayList<Integer>();
List<Integer> treeToList(Node node){
if (node == null)
return;
printInorder(node.left);
if(!node.isEmpty){
treeValues.add(node.value);
}
printInorder(node.right);
}
void sortedTree(Node node){
List<Integer> treeData = treeToList(node);
Collections.sort(treeData);
for(int i=0; i<treeData.size();i++ ){
System.out.println(treeData.get(i));
}
}
关于java - 二叉树 : printing the data in ascending order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560644/
我有以下 SP CREATE PROCEDURE GetAllHouses set @webRegionID = 2 set @sortBy = 'case_no' set @
您好,我想知道如何在 SQL 服务器中完成。 我的代码不起作用。 SELECT * FROM TABLE_NAME WHERE NAME = 'United Kingdom' ORDER BY Nam
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭13 年前。 Improve th
我正在尝试创建一个Java程序,该程序读取键盘输入的数字字符串, 并给出最长的升序子字符串。 以下是我的代码: import java.util.Scanner; public class Ascen
我曾经在 SGS 2 I9100 (4.1.2) 上测试我的应用程序,在设备出现缺陷后我购买了华为 Ascend P6 (4.2)。我必须始终以 HiSuite 模式连接它,这会在 PC 上启动他们烦
在 Interface Builder 中,我希望能够通过 Cap Height 对齐 UILabel。在 IB 中没有办法做到这一点,所以我想我可能会扩展 UILabel,以便框架从 Cap Hei
本题其实改编自one previously asked by Mat.S (image)。虽然被删了,但我觉得这是个好问题,所以重新发一下,要求更明确,有自己的解决方案。 给定一个字母和数字列表,假设
我想知道 d3 中排序函数和升序函数之间的区别。 我正在寻找一种方法来按所选列的升序重新排列表中的数据。 谢谢。 最佳答案 Array.sort()将按字母顺序对值进行升序排序。 Array.sort
我有一个 gridview,当用户单击标题时,我需要对其元素进行排序。 它的数据源是一个List对象。 aspx 是这样定义的:
我有一个包含以下代码的条件查询: CriteriaQuery criteria = cb.createQuery(MyClass.class); Root root = criteria.from(M
我使用用户输入存储五个不同的值。并按照从命令提示符插入的方式进行显示,现在我想在显示过程中将输出组织为升序或降序顺序。我搜索了这个,但我得到了更复杂的例子。我的代码非常简单。我在学习。到目前为止,我已
我是java初学者..我刚刚开始在线学习数据结构。我想按升序打印添加到二叉树中的值。 我创建了一个方法 print 并尝试使用以下值: 9,5,2,8,3 它打印了这个输出并停止了 2 , 3 ,8
我正在为我的 iOS 应用程序使用自定义字体。我的 View 需要根据 View 的大小为字体选择不同的磅值。如果我有一个预定的 CGFloat ascender; 我基本上想确定这一点 CGFloa
在我看来这像是 Webkit 错误,但我不确定。尽管 元素已正确 border-box值,影子 DOM 以某种方式将所有重置为默认值 content-box . Firefox 是一致的。 IE/Ed
这个问题在这里已经有了答案: The model item passed into the dictionary is of type .. but this dictionary requires
我已经找了很久,但没有找到实际的答案,因为我看不到任何以升序键开头然后以降序值开头的答案。 一个更清楚的例子: d = {'banana':3, 'orange':5, 'apple':5} out:
在像堆排序或快速排序这样的排序算法中,为什么标准出版物或研究论文在可以简单地分别使用升序或降序时更喜欢术语“非降序”或“非升序”?我的意思是无论如何意思都是一样的。 最佳答案 非升序(和非降序)包括相
我有一个大表(现在约 100 万行,很快约 1000 万行)有两个排名列(除了常规数据): avg_visited,一个 0-1 的 float ,代表百分比年龄;越高越好 alexa_rank,一个
如果我运行这个: ALTER TABLE `equipos11a12` ORDER BY `ID` 它只会发生一次。如果我更改 ID,它不会按升序更改。 我必须每次都运行 alter table
在核心数据获取请求中,我想对结果进行排序,不区分大小写。所以我编码: NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
我是一名优秀的程序员,十分优秀!