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;
            }
        }
    }
}
上一篇:MAYAPlugin_Mel_筛选导角边


下一篇:Mule学习(五、Mule Expression Language - MEL表达式)