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:
  题解最后说两句声明
 
 
题解
 
public class Solution {
    
    public TreeNode 
increasingBST(TreeNode root
) {
        
        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
;
    }
}
 
最后说两句
 
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
 
作者水平有限,如果文章内容有不准确的地方,请指正。
 
希望小伙伴们都能每天进步一点点。
 
声明
 
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~