剑指Offer——二叉搜索树与双向链表(JS实现)
原创
©著作权归作者所有:来自51CTO博客作者wb59770b05237ae的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
解题思路
- 使用二叉树的中序遍历,将每一个节点存到一个数组中
- 使用for循环改变每个节点的left,right指针域
实现代码
var treeToDoublyList = function (root) {
const temp = [];
function dfs(root) {
if (!root) return null;
dfs(root.left);
temp.push(root)
dfs(root.right);
return null;
}
dfs(root);
const len = temp.length;
for (let i = 0; i < temp.length; i++) {
if (i !== 0) {
temp[i].left = temp[i - 1];
} else {
temp[i].left = temp[len-1];
}
if (i !== len - 1) {
temp[i].right = temp[i + 1];
} else {
temp[i].right = temp[0];
}
}
return temp[0];
};