小编dtu*_*y68的帖子

如何获取从根到二叉树上给定节点的路径?

我试图找出如何获取从二进制树上的根到给定节点的路径.

它不是二叉搜索树.

每个非叶子节点只有两个指向其子节点的指针.

按顺序,预订,后订单遍历不起作用.

我曾尝试做预购,但无法弄清楚如何.例如,我们有一个二叉树:它不是二叉搜索树.我们使用排序顺序节点来更容易地找到路径.

     1 
   /   \
  2     3
 / \   / \
4   5 6   7 
Run Code Online (Sandbox Code Playgroud)

我们想要找到1到7的路径:

通过预购,我们有:

1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 
Run Code Online (Sandbox Code Playgroud)

从流程中,我们得到路径从1 - > 7,其上包含所有节点.

显然,它不应该.

任何帮助都非常感谢.

tree binary-tree

18
推荐指数
2
解决办法
3万
查看次数

从函数返回的堆分配

The function has a problem: 

void myAllo(int mySize, char *myChar )
{
    myChar = new char[mySize];
}
Run Code Online (Sandbox Code Playgroud)

堆分配是否会从myAllo()?返回?我不这么认为,因为指向的内存myChar将在myAllo返回时被释放.

对 ?

欢迎任何评论.

谢谢

c++ heap pointers new-operator

2
推荐指数
1
解决办法
1830
查看次数

如何在VMS上列出历史命令?

如何在VMS上列出历史命令?

在linx上,我们可以使用"历史".

我在VMS上找不到相应的命令.

任何帮助将不胜感激.

谢谢

history vms openvms

1
推荐指数
1
解决办法
2094
查看次数

是否可以通过使用递归函数使堆栈溢出?

这个功能有一些问题吗?

 unsigned long factorial(unsigned long m)
 {
     return (m == 0) ? 1 : m * factorial(m - 1);
 }
Run Code Online (Sandbox Code Playgroud)

如果我添加另一个功能:

  int myCombina(int q, int p)
  {
      return factorial(q) / ( factorial(q) * factorial(q-p) );
  }
Run Code Online (Sandbox Code Playgroud)

这个myCombina()效率不高,因为应该取消最大公约数以找到组合.

max(factorial(q),factorial(qp))可以被取消.我们只需要计算qx(q-1)... x(q -k +1).

还有其他问题吗?

欢迎任何评论.

谢谢

c c++ stack-overflow recursion stack

0
推荐指数
1
解决办法
231
查看次数