給定一個二叉樹,原地將它展開為一個單鏈表。例如,給定二叉樹1/ \2 5/ \ \
3 4 6
將其展開為:1\2\3\4\5\6
代碼
class Solution {public void flatten(TreeNode root) {flat(root);}public TreeNode flat(TreeNode root) {if(root==null) return null;TreeNode left=root.left,right=root.right;//記錄下左右子樹root.right=flat(left);將左子樹連在右子樹上TreeNode temp=root;while (temp.right!=null)//遍歷當前右子樹到末尾temp=temp.right;temp.right=flat(right);//再將原來的右子樹連接到末尾root.left=null;return root;}
}