反轉二叉樹----java實現
阿新 • • 發佈:2019-01-03
實現二叉樹的反轉
示例:
原二叉樹:
4 / \ 2 7 / \ / \ 1 3 6 9
反轉後的二叉樹:
4 / \ 7 2 / \ / \ 9 6 3 1
程式碼實現:(遞迴)
思路:1.判斷根是否為空,根為空直接返回根;否則繼續;
2.遞迴反轉根的左右子樹
public TreeNode invertNode(TreeNode root) { if(root==null) return root; TreeNode temp=root.left; root.left=invertNode(root.right); root.right=invertNode(temp); return root; }
程式碼實現:(非遞迴)
思路:1.判斷根是否為空,根為空直接返回根;否則繼續;
2.交換根節點的左右子節點;
3. 交換第二層結點的左右子樹;
4 重複下去,最後一個結點。
public TreeNode invertNode(TreeNode root) { if(root==null) return null; Queue<TreeNode> queue=new LinkedList<TreeNode>(); queue.add(root); while(queue!=null){ TreeNode current=queue.poll(); TreeNode temp=current.left; current.left=current.right; current.right=temp; if(current.left!=null) queue.add(current.left); if(current.right!=null) queue.add(current.right); } return root; }