【精】LintCode领扣算法问题答案-1744. 递增顺序查找树

    科技2022-08-05  117

    1744. 递增顺序查找树

    描述

    给定一个二叉排序树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。

    给定树中的结点数介于 1 和 100 之间。每个结点都有一个从 0 到 1000 范围内的唯一整数值。

    样例 1:

    输入: root = {5,3,6,2,4,#,8,1,#,#,#,7,9} 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9 输出: {1,#,2,#,3,#,4,#,5,#,6,#,7,#,8,#,9} 解释: 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9

    样例 2:

    输入: root = {8,3,10,1,6,#,14,#,#,4,7,13,#} 8 / \ 3 10 / \ \ 1 6 14 / \ / 4 7 13 输出: {1,#,3,#,4,#,6,#,7,#,8,#,10,#,13,#,14} 解释: 1 \ 3 \ 4 \ 6 \ 7 \ 8 \ 10 \ 13 \ 14

    原题传送门


    文章目录

    1744. 递增顺序查找树描述样例 1:样例 2: 题解最后说两句声明


    题解

    /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: a binary search tree * @return: Root of a tree */ public TreeNode increasingBST(TreeNode root) { // Write your code here. TreeNode nRoot = new TreeNode(0); TreeNode nNode = nRoot; Stack<TreeNode> s = new Stack<>(); TreeNode n = root; while (n != null || !s.empty()) { while (n != null) { s.push(n); n = n.left; } if (!s.empty()) { n = s.pop(); nNode.right = new TreeNode(n.val); nNode = nNode.right; n = n.right; } } return nRoot.right; } }

    最后说两句

    非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

    作者水平有限,如果文章内容有不准确的地方,请指正。

    希望小伙伴们都能每天进步一点点。

    声明

    本文由二当家的白帽子博客原创,转载请注明来源,谢谢~

    Processed: 0.014, SQL: 8