思路源自
leetcode-树篇 114题 二叉树展开为链表
对于当前结点来说,先把左子树全部拉平成链表,再把右子树也全部拉平成链表
然后记录当前结点的右子树起始点temp,把当前结点右指针指向左子树,左子树的最右下边的结点的右指针指向一开始记录的temp,最后就拉平成链表了
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public void flatten(TreeNode root) {if (root != null) {flatten(root.left);flatten(root.right);TreeNode temp = root.right;root.right=root.left;root.left = null;while (root.right!=null) root=root.right;root.right = temp;}}
}