思路1分析:步骤如下
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.ArrayList; public class Solution { public TreeNode Convert(TreeNode root) { if(root==null) return null; ArrayList<TreeNode>list=new ArrayList<>(); Inorder(list,root);//之后list里面保存了搜索二叉树的顺序遍历的结点序列 return Change(list); } public void Inorder(ArrayList<TreeNode>list,TreeNode root){ if(root!=null){ Inorder(list,root.left); list.add(root); Inorder(list,root.right); } } public TreeNode Change(ArrayList<TreeNode>list){ TreeNode head=list.get(0); TreeNode p=head; for(int i=1;i<list.size();i++){ TreeNode tmp=list.get(i); tmp.left=p; p.right=tmp; p=tmp; } return list.get(0); } }
思路2分析(递归):
原文:https://www.cnblogs.com/xuechengmeigui/p/13037929.html