【发布时间】:2013-08-24 14:56:01
【问题描述】:
我希望这是一个可以接受的问题。我理解递归的思维模式,我想先考虑基本情况,然后再考虑递归情况,但是对于一些更困难的 BST 问题,我只是空白,感觉就像在没有好的方向的情况下迷失了方向。
以链表为例,似乎有一种解决问题的模式,但 BT 似乎你知道或不知道。任何提示/指针?我似乎已经理解的唯一概念是,如果我正在处理空节点并且我想对它们或关于它们做一些事情,我会把它作为一个案例
if(root == null)
//do something
或者如果我与空节点没有任何关系,那么我使用倒置的基本情况
if(root != null)
//do stuff
else
//do nothing for null case
但即便如此,我也会不知所措。我想这是一个我被困住并且不知道如何解决的问题的例子。我不一定要寻找答案,只是寻找处理此类问题(以及常规二叉树问题)的潜在策略。
编写一个方法numberNodes,更改存储在二叉树中的数据,为每个节点分配从1开始的连续整数,以便前序遍历将产生按顺序(1、2、3等)的数字。 )。例如,给定由左下方的树引用的树,tree.numberNodes(); 的调用将覆盖现有数据,将节点值从 1 分配到 6,以便树的前序遍历将产生1, 2, 3, 4, 5, 6。
你不能改变树的结构。您只是更改存储在数据字段中的值。您的方法应该返回树中有多少节点的计数。
假设您将此方法添加到IntTree 类中,定义如下:
public class IntTree {
private IntTreeNode overallRoot;
...
}
再看一遍代码后,我想我应该使用我的int count 作为一种方法来确定我是前往左根还是右根,因为它是一个二叉搜索树,但我仍然无法实现这一点功能...啊编码块!
【问题讨论】:
-
画出来,写下你的 Node 类并完成你需要做的事情
标签: java binary-tree preorder