【发布时间】:2016-08-20 18:21:36
【问题描述】:
我遇到了THISgeeksforgeeks 的帖子,在二叉树中找到距离给定节点 k 处的节点。
即使花了几个小时我也无法理解它。特别是在祖先中找到距离 k 的节点的部分。
有人可以帮我对 geeksforgeeks 帖子中的代码/算法进行一次小试运行吗?或者任何其他不使用父指针的易于理解的解决方案?
【问题讨论】:
标签: algorithm binary-tree
我遇到了THISgeeksforgeeks 的帖子,在二叉树中找到距离给定节点 k 处的节点。
即使花了几个小时我也无法理解它。特别是在祖先中找到距离 k 的节点的部分。
有人可以帮我对 geeksforgeeks 帖子中的代码/算法进行一次小试运行吗?或者任何其他不使用父指针的易于理解的解决方案?
【问题讨论】:
标签: algorithm binary-tree
假设目标节点的深度为D。
【讨论】:
printkdistanceNodeDown(root, k)在节点“root”下查找到“root”距离为k的所有节点。 printkdistanceNode() 将检查目标节点是否在左子树 (if (dl != -1))、右子树 (if (dr != -1)) 中找到,或者不是它的子节点 (return -1)。
dr 是当前节点到目标的距离,如果目标不是右子树的一部分,则为 -1。所以,你需要通过这个函数printkdistanceNodeDown(root->left, k-dr-2);找出左子树中距离为k-dr-2的所有节点。