翻转一棵二叉树。
示例:
输入:
4/ \2 7/ \ / \1 3 6 9
输出:
4/ \7 2/ \ / \9 6 3 1
递归法实现
/*** @param {TreeNode} root* @return {TreeNode}*/const invertTree = function(root) {// 定义递归边界if(!root) {return root;}// 递归交换右孩子的子结点let right = invertTree(root.right);// 递归交换左孩子的子结点let left = invertTree(root.left);// 交换当前遍历到的两个左右孩子结点root.left = right;root.right = left;return root;};
迭代法实现
var invertTree = function(root) {if(!root) return null;let stack = [];stack.push(root)while(stack.length) {let cur = stack.pop();if(cur.left) stack.push(cur.left);if(cur.right) stack.push(cur.right);// 翻转节点let q = cur.left;cur.left = cur.right;cur.right = q;}return root;};
