当前位置:   article > 正文

LeetCode-114.二叉树展开为链表(相关话题:深度优先)_java给定一个二叉树,原地将它展开为链表

java给定一个二叉树,原地将它展开为链表

给定一个二叉树,原地将它展开为链表。

例如,给定二叉树

  1. 1
  2. / \
  3. 2 5
  4. / \ \
  5. 3 4 6

将其展开为:

  1. 1
  2. \
  3. 2
  4. \
  5. 3
  6. \
  7. 4
  8. \
  9. 5
  10. \
  11. 6

解题思路:

按照前序遍历的顺序(栈),展开成链表

Java代码:

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public void flatten(TreeNode root) {
  12. if(null == root)
  13. return;
  14. Stack<TreeNode> stack = new Stack<>();
  15. TreeNode p = root;
  16. while(null != p.left || null != p.right){
  17. if(null != p.left && null != p.right)
  18. stack.push(p.right);
  19. if(null != p.left){
  20. p.right = p.left;
  21. p.left = null;
  22. }
  23. p = p.right;
  24. }
  25. while(!stack.isEmpty()){
  26. TreeNode tmp = stack.pop();
  27. p.right = tmp;
  28. p = p.right;
  29. while(null != p.left || null != p.right){
  30. if(null != p.left && null != p.right)
  31. stack.push(p.right);
  32. if(null != p.left){
  33. p.right = p.left;
  34. p.left = null;
  35. }
  36. p = p.right;
  37. }
  38. }
  39. }
  40. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42665
推荐阅读
相关标签
  

闽ICP备14008679号