leetcode原題:(https://leetcode-cn.com/problems/invert-binary-tree/)
題解:使用層序遍歷的方式比較合適,其實只要交換每一層的左右子節(jié)點,因為交換每一串的左右子節(jié)點,左節(jié)點的左右子節(jié)點也會跟著交換過去,這時候只要把左節(jié)點的左子節(jié)點與右子節(jié)點交換,同時右節(jié)點也是如此操作即可達(dá)到題目要求。
class Solution {
public TreeNode invertTree(TreeNode root) {
// 本題使用層序遍歷的方式
if(root == null){
return root;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode cur = queue.poll();
TreeNode temp = cur.left;
// 不需要考慮是否為空的,因為為空的話把空交換過去交換過去即可。
cur.left = cur.right;
cur.right = temp;
if(cur.left != null){
queue.offer(cur.left);
}
if(cur.right != null){
queue.offer(cur.right);
}
}
return root;
}
}