zoukankan      html  css  js  c++  java
  • 70. 二叉搜索树的第k个结点 --中序遍历

    实际上是中序遍历,每次遍历到一个节点,k--。直到k==0,就找到了第k个数。

    二叉树基本操作:前序、中序、后序遍历(递归方式)

    递归中序遍历函数模板

    void inorder(tree_pointer ptr)
    {
        if (ptr) {
            inorder(ptr->left_child);
            printf("	%d", ptr->data);
            inorder(ptr->right_child);
        }
    }

    递归算法总结

    class Solution {
    public:
        
        TreeNode *ans;
        
        TreeNode* kthNode(TreeNode* root, int k) {
            cout<<"主函数"<<" "<<"root="<<root->val<<endl;
            dfs(root,k);
           // cout<<"主函数"<<" "<<"root="<<root->val<<endl;
            return ans;
        }
        
        void dfs(TreeNode* root, int &k)
        {
            cout<<"递归"<<endl;
            if(!root) {
                cout<<"满足if(!root)"<<endl;
                return;
            }
            cout<<"root="<<root->val<<endl;
            dfs(root->left, k);
            cout<<"k="<<k<<" "<<endl;
            k--;
            cout<<"执行k--后,k值="<<k<<" "<<endl;
            if(!k){
                ans =root;
                cout<<"满足if(!k)"<<endl;
            }
            if(k > 0) {
                cout<< "满足if(k>0)"<<endl;
                dfs(root->right,k);
            }
        }
    };

    测试结果

     输出

    主函数 root=2
    递归
    root=2
    递归
    root=1
    递归
    满足if(!root)
    k=3
    执行k--后,k值=2
    满足if(k>0)
    递归
    满足if(!root)
    k=2
    执行k--后,k值=1
    满足if(k>0)
    递归
    root=3
    递归
    满足if(!root)
    k=1
    执行k--后,k值=0
    满足if(!k)
    3

    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    简版一致性hash算法实现
    js类型转换问题
    VIVADO 2017.4配置MIG IP注意事项
    工作笔记2
    工作笔记1
    spring5 + hibernate5(redisson二级缓存) + JPA + JTA + ActiveMQ(JMS)
    spring data jpa 缓存(hibernate)
    JPA @Temporal
    C++ RTTI
    二叉树遍历方法总结
  • 原文地址:https://www.cnblogs.com/make-big-money/p/12334618.html
Copyright © 2011-2022 走看看