Java教程

114. 二叉树展开为链表

本文主要是介绍114. 二叉树展开为链表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

114. 二叉树展开为链表:

题目链接 :114. 二叉树展开为链表

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


思路:

1、迭代:先序

  • 根的左子树替换其右子树位置

  • 原右子树放到左子树右侧

  • 考虑原右子树为根节点的子树内的位置关系


AC代码:

/**
 * 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) {
        while(root!=null)
        {
            if(root.left==null)
            {
                root=root.right;
            }
            else{
                TreeNode prev=root.left;
                while(prev.right!=null)
                {
                    prev=prev.right;
                }
                prev.right=root.right;
                root.right=root.left;
                root.left=null;
                root=root.right;
            }
        }
    }
}
这篇关于114. 二叉树展开为链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!