如何在 JavaScript 中反转二叉树?

Bog*_*sev 3 javascript algorithm binary tree

我怎样才能翻转二叉树?我最近遇到了这个问题,我所有的尝试都失败了。初始树如下所示。

     4
   /   \
  2     7
 / \   / \
1   3 6   9

     4
   /   \
  7     2
 / \   / \
9   6 3   1
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var invertTree = function(root) {
    
};
Run Code Online (Sandbox Code Playgroud)

小智 9

使用DFS(深度优先搜索)在js中使用递归方法会更容易,并且只需交换节点

    const trav = (currNode) => {
      if (currNode === null) {
        return;
      }
      const temp = currNode.lNode;
      currNode.lNode = currNode.rNode;
      currNode.rNode = temp;
      trav(currNode.lNode);
      trav(currNode.rNode);
    };
    trav(root);
    return root;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅我为更有趣的方法编写的类 -
类 - https://www.npmjs.com/package/@dsinjs/binary-tree
reverse() 方法的文档 - https://dsinjs.github.io/二叉树/#reverse