标签:public pop || nod bool 全局 link class targe
inorder traversal 的问题,可以递归做也可以非递归做。
这道题和 426. Convert Binary Search Tree to Sort Doubly Linked List 类似,需要一个 prev 指针记录前一个节点。非递归更好些,递归写可以把 prev 声明为全局变量,也可以引用传递作为 inorder 的参数。
这道题是非递归好写,随机应变。
非递归:
class Solution { public: bool isValidBST(TreeNode* root) { if (root==NULL) return true; stack<TreeNode *> s; TreeNode *p=root, *prev=NULL; while (!s.empty() || p!=NULL){ while (p!=NULL){ s.push(p); p = p->left; } p = s.top(); s.pop(); if (!(prev==NULL || p->val>prev->val)) return false; prev = p; p = p->right; } return true; } };
递归:
/** * 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: bool isValidBST(TreeNode* root) { TreeNode *prev=NULL; return inorder(root,prev); } bool inorder(TreeNode *root, TreeNode *&prev){ if (root==NULL) return true; if (!inorder(root->left,prev)) return false; if (!(prev==NULL || root->val>prev->val)) return false; prev = root; return inorder(root->right,prev); } };
LeetCode 98. Validate Binary Search Tree
标签:public pop || nod bool 全局 link class targe
原文地址:https://www.cnblogs.com/hankunyan/p/9557747.html