题解 | #JZ54 按之字形顺序打印二叉树#

二叉搜索树的第k个结点

http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
/*    TreeNode* node=nullptr;
    void traceTree(TreeNode *pRoot, int &k) {
        if (!pRoot) return;
        traceTree(pRoot->left, k);    //遍历左子树
        --k;    //当前节点为剩余最小值,计数递减
        if (k==0) node = pRoot;    //计数到,返回当前接地啊你
        else traceTree(pRoot->right, k);
    }
    TreeNode* KthNode(TreeNode* pRoot, int k) {
        traceTree(pRoot, k);
        return node;
    } 
*/
    
    TreeNode* KthNode(TreeNode* pRoot, int k) {
        TreeNode *node=pRoot;
        stack<TreeNode*> s;			
        
        while (node || s.size()) {
            while (node) {    //左子树到底
                s.push(node);
                node = node->left;
            }
            
            node = s.top();    //取出最左下节点
            s.pop();
            
            --k;    //遍历了最小节点,计数减1
            if (k==0) return node;    //计数为0 返回该节点
            
            node = node->right;    //
        }
        
        return nullptr;
    } 
};
全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务