给定一棵二叉树,返回它的中序遍历。
class Solution {
public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; stack<TreeNode* > stk; TreeNode* ptr=root; if(ptr==NULL) return result; while(true) { if(ptr->left!=NULL) { stk.push(ptr); ptr=ptr->left; } else if(ptr->right!=NULL) { result.push_back(ptr->val); ptr=ptr->right; } else { result.push_back(ptr->val); if(stk.empty()) break; else { while(!stk.empty()) { result.push_back(stk.top()->val); if(stk.top()->right==NULL) stk.pop(); else break; } if(stk.empty()) break; else { ptr=stk.top()->right; stk.pop(); } } } } return result; }};新闻热点
疑难解答