牛客网刷题之二叉搜索树的第k个结点

来源:互联网 发布:日语等级考试 知乎 编辑:程序博客网 时间:2024/06/17 23:58

题目描述:

这里写图片描述

解题思路:

中序遍历二叉搜索树就是从小到大排列的。所以,中序遍历,找到顺序为k的返回即可。
递归实现:

int count = 0;    TreeNode KthNode(TreeNode pRoot, int k) {        TreeNode resNode = null;        if (pRoot != null) {            resNode = KthNode(pRoot.left, k);            if (resNode != null) {                return resNode;            }            if (++count == k) {                return pRoot;            }            resNode = KthNode(pRoot.right, k);            if (resNode != null) {                return resNode;            }        }        return null;    }

非递归:

TreeNode KthNode(TreeNode pRoot, int k) {       if (pRoot == null || k <= 0 ){             return null;         }        int count = 0;        Stack<TreeNode> stack = new Stack<>();        while(pRoot != null || ! stack.isEmpty()){            if(pRoot != null){                stack.push(pRoot);                pRoot = pRoot.left;            }else{                pRoot = stack.pop();                if(++ count == k){                    return pRoot;                }                pRoot = pRoot.right;            }            }        return null;        }

ac结果:

这里写图片描述

0 0
原创粉丝点击