LeetCode:114二叉树展开为链表

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public void flatten(TreeNode root) {
        TreeNode curr = root;

        while(curr != null){
            //只有左子树存在的时候才需要移接
            if(curr.left != null){
                //在左子树中找最右下角节点
                TreeNode pre = curr.left;
                while(pre.right != null){
                    pre = pre.right;
                }

                pre.right = curr.right;

                curr.right = curr.left;
                curr.left = null;
            }
            curr = curr.right;
        }
    }
}

做的过程中对照代码画图更好理解。

相关推荐
天天进步20151 小时前
从零打造 Python 全栈项目:智能教学辅助系统
开发语言·人工智能·python
SamDeepThinking1 小时前
面试官问Bean线程安全,你该从架构角度回答
java·后端·面试
无小道1 小时前
Redis——哈希类型相关指令
redis·算法·哈希算法
敖正炀1 小时前
ArrayList 与 LinkedList 源码全景:从数据结构选择到性能分歧的完整代码路径
java
凌波粒1 小时前
LeetCode--513.找树左下角的值(二叉树)
java·算法·leetcode
敖正炀1 小时前
HashMap 红黑树化与退化
java
一个不知名程序员www1 小时前
算法学习入门---算法题DAY1
c++·算法
喜欢小苹果的码农1 小时前
xxl-job主流程分析
java
敖正炀1 小时前
HashMap 源码深度拆解(JDK 7→8)
java