前序遍历和中序遍历的模版,记住它你的人生是彩色的
二叉搜索树的第k个结点
http://www.nowcoder.com/questionTerminal/ef068f602dde4d28aab2b210e859150a
中序遍历
TreeNode* KthNode(TreeNode* head, int k){ std::stack<TreeNode*> mstck; TreeNode* curr = head; while(curr || !mstck.empty()){ while(curr){ mstck.push(curr); curr = curr->left; } if(--k == 0) return mstck.top(); //访问节点 curr = mstck.top()->right; mstck.pop(); } return nullptr; }
前序遍历
TreeNode* KthNode(TreeNode* head, int k){ std::stack<TreeNode*> mstck; TreeNode* curr = head; while(curr || !mstck.empty()){ while(curr){ //访问节点 mstck.push(curr); curr = curr->left; } ......................... curr = mstck.top()->right; mstck.pop(); } return nullptr; }