• 二叉树展开为链表


    二叉树展开为链表

    题目:
    给定一个二叉树,原地将它展开为一个单链表。
    例如,给定二叉树
    在这里插入图片描述

    将其展开为:
    在这里插入图片描述
    解题思路:运用前序遍历将节点添加进list中,然后遍历list改变每一个节点的左右节点

    /**
     * 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 {
        private List<TreeNode> list = new ArrayList();
        public void flatten(TreeNode root) {
            if(root == null)
                return;
            
            preOrder(root);
            int len = list.size();
            for(int i = 1; i < len; i++) {
                TreeNode cur = list.get(i);
                TreeNode pre = list.get(i - 1);
                pre.left = null;
                pre.right = cur;
            }
        }
        
        private void preOrder(TreeNode node) {
            if(node == null)
                return ;
            
            list.add(node);
            preOrder(node.left);
            preOrder(node.right);
        }
    }
  • 相关阅读:
    C# CefSharp
    C# CRC16 modbus
    C++ 调试信息输出
    运行elasticsearch.bat出错
    Windows下NodeJS安装与npm环境变量配置
    Rescue
    Catch That Cow
    7.3.1 Swagger 文档生成工具
    3.并发处理
    2.集合处理
  • 原文地址:https://www.cnblogs.com/katoMegumi/p/13913276.html
Copyright © 2020-2023  润新知