目录
1,题目
2,代码
2.1递归思想-深度优先遍历
2.2迭代-广度优先遍历
3,学习与总结
1,题目
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
2,代码
2.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) {if(root === null){return root;}const left = invertTree(root.left);const right = invertTree(root.right);root.right = left;root.left = right;return root;
};
2.2迭代-广度优先遍历
/*** 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) {if(root === null){return root;}let queue = [];queue.push(root);while(queue.length > 0){const node = queue.shift();//节点中的左右孩子进行交换const tempTree = node.left;node.left = node.right;node.right = tempTree;// 当节点的左子树不为空 将该节点入队列if(node.left != null){queue.push(node.left);}if(node.right != null){queue.push(node.right)}}return root;
};
3,学习与总结
多练习 多做题!
勉励自己:贵在坚持!