题目
文章来源地址https://www.toymoban.com/news/detail-609143.html
题解一:递归
public TreeNode invertTree(TreeNode root) {
//递归终止条件
if(root == null){
return null;
}
TreeNode left = invertTree(root.left);//翻转左子树
TreeNode right = invertTree(root.right);//翻转右子树
root.right = left;//交换根节点的左右子树
root.left = right;
return root;
}
题解二:队列迭代
/**
* 迭代
*
* @param root
* @return
*/
public TreeNode invertTree(TreeNode root) {
if(root == null){
return null;
}
//队列
Queue<TreeNode> queue = new LinkedList<>();
//将root节点放入队列
queue.add(root);
//队列不为空,就一直处理
while (!queue.isEmpty()) {
//取出队列最前位置的节点
TreeNode index = queue.poll();
//交换左右子树
TreeNode tmp = index.left;
index.left = index.right;
index.right = tmp;
//若左子树节点不为空 则加入队列继续处理
if (index.left != null) {
queue.add(index.left);
}
//若右子树节点不为空 则加入队列继续处理
if (index.right != null) {
queue.add(index.right);
}
}
return root;
}
文章来源:https://www.toymoban.com/news/detail-609143.html
到了这里,关于226. 翻转二叉树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!