一、問題描述
Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9to
4 / \ 7 2 / \ / \ 9 6 3 1
二、問題分析
首先對於樹的遍歷而言往往採用遞歸的方式。大部分類型的題目都涉及遍歷,只不過在遍歷的時候進行相應的處理。這道題也是,從根節點出發,如果有左右孩子就交換一下,然後遞歸遍歷做孩子、右孩子。
三、Java AC代碼
public TreeNode invertTree(TreeNode root) {
invert(root);
return root;
}
public void invert(TreeNode node){
if (node!=null && (node.left!=null || node.right != null)) {
TreeNode tmp = node.left;
node.left = node.right;
node.right = tmp;
}else {
return ;
}
invert(node.left);
invert(node.right);
}