题目:翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
思路:
代码:
1 /** 2 * Definition for a binary tree node. 3 * function TreeNode(val, left, right) { 4 * this.val = (val===undefined ? 0 : val) 5 * this.left = (left===undefined ? null : left) 6 * this.right = (right===undefined ? null : right) 7 * } 8 */ 9 /** 10 * @param {TreeNode} root 11 * @return {TreeNode} 12 */ 13 var invertTree = function(root) { 14 //判断当前树是否为 null 15 if(root == null) return root; 16 //左右子树结点交换 17 let right = root.right; 18 let left = root.left; 19 root.right = left; 20 root.left = right; 21 //分别对左右子树进行递归 22 invertTree(left); 23 invertTree(right); 24 //返回树的根节点 25 return root; 26 };
原文:https://www.cnblogs.com/icyyyy/p/14787638.html