剑指offer-26-二叉搜索树与双向链表
二叉搜索树与双向链表
http://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5
import java.util.ArrayList;
public class Solution {
public static ArrayList<treenode> arr=new ArrayList<>();
public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree==null)
return null;
ArrayList<treenode> arrs=PutQue(pRootOfTree);
if(arrs.size()==1)
return arrs.get(0);
arrs.get(0).right=arrs.get(1);
for (int i = 1; i <arrs.size()-1 ; i++) {
arrs.get(i).right=arrs.get(i+1);
arrs.get(i).left=arrs.get(i-1);
}
arrs.get(arrs.size()-1).left=arr.get(arrs.size()-2);
arr=new ArrayList<treenode>(); //清空arr不然测试过不了
return arrs.get(0);
}
public ArrayList<treenode> PutQue(TreeNode pRootOfTree) {
if (pRootOfTree==null)
return null;
PutQue(pRootOfTree.left);
arr.add(pRootOfTree);
PutQue(pRootOfTree.right);
return arr;
}
}</treenode></treenode></treenode></treenode>