二叉搜索树Unique Binary Search Trees II 中的代码问题

q294402756 2015-07-23 03:10:20

public ArrayList<TreeNode> generateTrees(int n) {
return generateTrees(1, n);//从1作为root开始,到n作为root结束
}

private ArrayList<TreeNode> generateTrees(int left, int right){
ArrayList<TreeNode> res = new ArrayList<TreeNode>();
if (left > right){
res.add(null); //为什么这里要加个null 有什么意义?
return res;
}
for (int i = left; i <= right; i++){
ArrayList<TreeNode> lefts = generateTrees(left, i-1);
ArrayList<TreeNode> rights = generateTrees(i+1, right);
for (int j = 0; j < lefts.size(); j++){ //为什么这个循环可以把结果都表达出来?
for (int k = 0; k < rights.size(); k++){
TreeNode root = new TreeNode(i);
root.left = lefts.get(j);
root.right = rights.get(k); //这里只是添加了 一个根节点的左孩子节点和右孩子节点,那孩子节点下面的子孙节点呢?
res.add(root); //接上面的问题 ,只是加了根节点,接下来的节点都可以表示了么?
}
}
}
return res;
}


//第一次接触二叉树的题目,有些弄不明白,求大神帮忙解惑,不甚感激
...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧