Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / 2 5 / 3 4 6The flattened tree should look like:
1 2 3 4 5 6
遍历的时候根右左
逆向的前序遍历
1 class Solution { 2 public void flatten(TreeNode root) { 3 root =help(root,null);; 4 5 } 6 private TreeNode help(TreeNode root,TreeNode prev){ 7 if(root==null) return prev; 8 //记录下上次访问的节点, 9 //上次访问的节点就是当前节点的右子树,左子树是null 10 prev = help(root.right,prev); 11 prev = help(root.left,prev); 12 root.right = prev; 13 root.left = null; 14 15 return root; 16 17 } 18 }