来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/flatten-binary-tree-to-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。

解答

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root
  11. * @return {void} Do not return anything, modify root in-place instead.
  12. */
  13. const inorder = (node, nodes) => {
  14. if (!node) return;
  15. nodes.push(node);
  16. inorder(node.left, nodes);
  17. inorder(node.right, nodes);
  18. }
  19. var flatten = function(root) {
  20. let nodes = [];
  21. inorder(root, nodes);
  22. let pre;
  23. for (let node of nodes) {
  24. node.left = null;
  25. if (pre) {
  26. pre.right = node;
  27. }
  28. pre = node;
  29. }
  30. return root;
  31. };