- 中序遍历
- 先存放到list当中
- 再根据list指向前后左右
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.*;
public class Solution {
List<TreeNode> list=new ArrayList<TreeNode>();
List<TreeNode> cunfanglist(TreeNode pRootOfTree){
//先存放到list当中
if(pRootOfTree.left==null&&pRootOfTree.right==null)
{
list.add(pRootOfTree);
return null;
}
//左根右中序遍历
if(pRootOfTree.left!=null)
{
cunfanglist(pRootOfTree.left);
}
list.add(pRootOfTree);
if(pRootOfTree.right!=null){
cunfanglist(pRootOfTree.right);
}
return list;
}
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null)
{
return null;
}
if(pRootOfTree.left==null&&pRootOfTree.right==null)
{
return pRootOfTree;
}
cunfanglist(pRootOfTree);
//第一个位置和最后一个位置最特殊
for(TreeNode e:list)
{
System.out.println(e.val);
}
for(int i=0;i<list.size();i++)
{
if(i==0)
{
list.get(0).right=list.get(1);
continue;
}
if(i==list.size()-1)
{
list.get(i).left=list.get(i-1);
continue;
}
list.get(i).right=list.get(i+1);
list.get(i).left=list.get(i-1);
}
return list.get(0);
}
}