很遗憾没有自己想到解决的办法 还是借鉴了答案的思维
本题考查的是我们对一些常规名词(搜索树等)这些的信息提取能力
首先便是中序遍历搜索树的顺序节点访问 与题目要求相同(从此处入手)
还有就是如何构建两个节点之间的联系
错误思想:
原树的前驱指针不用替换 传入参数的形参调用问题
var treeToDoublyList = function(root) {
if(!root)return null;
let pre=[];
def(root,pre);
while(root.left){
root=root.left
}
root.left=pre[0];
pre[0].right=root
return root;
};
var def= function(currentnode,pre){
if(currentnode==null)return;//尾节点不操作
def(currentnode.left,pre);
if(pre.length==0) {pre[0]=currentnode}
else{
currentnode.left=pre[0];
pre[0].right=currentnode;//两相邻节点连接
pre[0]=currentnode;
}
def(currentnode.right,pre)
}