我想从右到左遍历一个二叉树,并将每个具有相同姓氏的条目添加到一个队列中。我已经正确地实现了一个队列列表类和一个树节点类,但是当我试图查找一些东西时,我得到了一个空指针异常。(当然我写过二叉树的插入方法)。
public class ST {
private TreeNode root;
private int size;
private Queue q;
public Queue searchByLastName(String last_name) {
searchByLastNameRec(this.root, last_name);
return q;
}
private void searchByLastNameRec(TreeNode newroot, String last_name) {
if (newroot == null)
return;
if (newroot.right != null) {
if (newroot.right.item.getLast_name().equalsIgnoreCase(last_name)) {
q.put(newroot.right.item);
}
searchByLastNameRec(newroot.right, last_name);
}
if (newroot.left != null) {
if (newroot.left.item.getLast_name().equalsIgnoreCase(last_name)) {
q.put(newroot.left.item);
}
searchByLastNameRec(newroot.left, last_name);
}
}
public class TreeNode {
Suspect item;
TreeNode left, right, parent;
int N;
public TreeNode(Suspect item) {
if (item == null)
throw new IllegalArgumentException();
this.item = item;
}
}
我猜你的树中的一些项目是空的,或者有些有空的姓氏。由于您在构造节点时检查空项,因此我倾向于后者。
试试这个:
public TreeNode(Suspect item) {
if (item == null)
throw new IllegalArgumentException();
if (item.getLast_name() == null)
throw new IllegalArgumentException();
this.item = item;
}
试试这个
private void searchByLastNameRec(TreeNode newroot, String last_name) {
if (newroot == null || newroot.item == null)
return;
if (Objects.equals(last_name, newroot.item.getLast_name()))
q.put(newroot.item);
searchByLastNameRec(newroot.right, last_name);
searchByLastNameRec(newroot.left, last_name);
}
这是一个面试问题。 我们希望按it级别打印二叉树,但有一些变化: 在偶数级别,打印将从左到右。 在奇数级别,打印将从右到左。 我试着使用这里的代码(正常的级别顺序遍历,方法2)只做了一些保持级别的更改(用于知道是从左到右打印还是从右到左打印),当然还添加了相关的条件,以便在正确的方向上打印。 不幸的是,我下面的代码在不小的树上不能很好地工作--我有一个问题,就是理解如何在循环中以正确的顺序存储节点
通常我们按顺序、前顺序或后顺序遍历二叉搜索树。但是,当我们按照从右到根到左的递归顺序遍历二叉搜索树时,会发生什么呢? 假设如果我将值存储在数组中,并且与前序遍历相比,当我们按此顺序遍历时,它的时间复杂度是否会增加。
我在编码挑战中遇到了一个问题。 完整二叉树是一种二叉树,其中除叶节点外的每个节点都有两个子节点,且树的最后一级边高度有叶节点。 您的任务很简单,给定完整二叉树的遍历,请按顺序遍历打印其
中序遍历二叉树 按完全二叉树的层次遍历给出一棵二叉树的遍历序列(其中用0表示虚结点),要求输出该二叉树的深度及中序遍历该二叉树得到的序列。 输入格式: 首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n(n≤1000),代表给出的二叉树的结点总数(当然,其中可能包含虚结点)。结点编号均为正整数,且各不相同。 然后输入n个正整数,表示按完全二叉树(即第1层1
假设我有一个简单的二叉树节点类,如下所示: 如何添加一个能够递归遍历任何大小的树的方法,从左到右访问每个现有节点,而无需重新访问已遍历的节点? 这行得通吗?