我希望这是一个可以接受的问题。我理解递归思考的模式,我想要考虑基本情况,然后递归的情况,但是有一些比较困难的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
,以确定是否有手段我前往左边的根或右边的根,因为它是一个二叉搜索树,但我仍然无法实现此功能... ahh编码块!
绘制出来,写下你的Node类,并通过你需要做的事来做 –