algorithm - 通过插入镜像 BST

标签 algorithm binary-search-tree

Write a function in C to create a new BST which is the mirror image of a given tree.

我想到了这个问题的一个实现,它只是从原始树中复制根节点,然后通过 DFS 遍历发现新节点并将它们插入到具有不同比较函数的新镜像树中(即使用 > 代替) < 遍历和插入节点时)。

我的问题是:这种方法是否适用于所有情况?我想是的,但我想知道是否存在我的解决方案不起作用的极端情况(或者是否有更好的解决方案)。

最佳答案

递归解法:镜像左右子节点,分别作为镜像节点的左右子节点。代码如下(调用 mirrorTree(root) 执行):

class Node:
  def __init__(self, val, left, right):
    self.val=val
    self.left=left
    self.right=right

def mirrorTree(node):
  new_node=None
  if node:
    new_node=Node(node.val, mirrorTree(node.right), mirrorTree(node.left))
  return new_node

关于algorithm - 通过插入镜像 BST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31383746/

相关文章:

c++ - Cython vector 操作

c - Dijkstra 算法 : Why is it needed to find minimum-distance element in the queue

c - 递归如何用于二叉搜索树算法

c++ - 检查BST中每个节点的平衡因子并将其存储在节点中

带有根子节点的 C++ 二叉搜索树错误

algorithm - gimp 色阶算法

python - 检测图像中白色背景的有效方法

javascript - 创建随机树?

data-structures - 平衡不平衡/部分平衡的 BST 的复杂性?

java - 二叉搜索树与 MultiMap