《从头再来》剑指offer.54 二叉搜索树的第k大节点
作者:互联网
给定一棵二叉搜索树,请找出其中第k大的节点。
我们需要明确一点,二叉搜索树的中序遍历即使一个从小到大的序列,所以找出的k大节点的话,我们可以直接对二叉搜索树进行中序遍历后,再来输出第k大即可。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: //中序遍历 void traverse(TreeNode* root){ if(root == nullptr) return; traverse(root->left); result.push_back(root->val); traverse(root->right); } vector<int> result; int kthLargest(TreeNode* root, int k) { traverse(root); return result[result.size()-k]; } };
中序遍历的模板就没什么好说的,如果是先序遍历、后续遍历的话,只需要改变三条代码的次序即可。
《从头再来》
标签:traverse,遍历,TreeNode,int,二叉,result,从头再来,offer.54,root 来源: https://www.cnblogs.com/azie420/p/14860631.html