1. 程式人生 > >反轉二叉樹----java實現

反轉二叉樹----java實現

實現二叉樹的反轉

示例:

原二叉樹:

     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;		
	}