0
点赞
收藏
分享

微信扫一扫

Java 实现二叉树排序树第k个节点

RIOChing 2022-01-31 阅读 44
Java 实现二叉树排序树第k个节点

需要用到二叉搜搜索数的性质:中序遍历之后得到的值是递增的顺序

import java.util.ArrayList;

public class Solution {
	
	/**
	 * 使用二叉搜索树的一个特性:中序遍历之后数据的顺序递增
	 * @param proot
	 * @param k
	 * @return
	 */
    public int KthNode (TreeNode proot, int k) {
    	
    	if (proot == null||k==0) return -1;
    	
    	// 1.定义集合:存储数据 - 此时集合中存储的数据是 递增的
    	ArrayList<Integer> trrIntegers = middleOrder(proot, new ArrayList<Integer>());
    	
    	if (k>trrIntegers.size()) return -1;
    	
    	// 2.返回数据
    	return trrIntegers.get(k-1);
    }
    
    
    /**
     * 中序遍历
     * @param parentNode
     * @param integers
     * @return
     */
    public ArrayList<Integer> middleOrder(TreeNode parentNode,ArrayList<Integer> integers){
    	
    	if (parentNode == null) return null;
    	
    	middleOrder(parentNode.left, integers);
    	
    	integers.add(parentNode.val);
    	
    	middleOrder(parentNode.right, integers);
    	
    	return integers;
    }
}
举报

相关推荐

0 条评论