/**
* 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:
// int dfs(TreeNode* root, double target){
// // if(root)
// double diff = (root->val - target)
// if(root->val > )
// }
void inoder(TreeNode* root, vector<int> &vc){
printf("root=%p\n",root);
if(root==NULL){
return;
}
if(root->left){
inoder(root->left,vc);
}
printf("root->val=%d\n",root->val);
vc.push_back(root->val);
if(root->right){
inoder(root->right,vc);
}
}
int closestValue(TreeNode* root, double target) {
if(root==NULL){
return 0;
}
vector<int> vc;
// printf("come here!!!\n");
//inoder(root,vc);\
stack<TreeNode*> st;
while(st.size()!=0 || root !=NULL){
if(root){
st.push(root);
root=root->left;
}else{
root=st.top();
vc.push_back(root->val);
st.pop();
//st.push(root->right);
root=root->right;
}
}
//printf("vc.size()=%d\n",vc.size());
double diff;
double mindiff;
mindiff =abs( vc[0]-target );
int value=vc[0];
for(int i=1; i<vc.size(); i++){
//printf("vc[i]=%d\n",vc[i]);
diff = abs(vc[i]-target);
if(diff < mindiff){
value=vc[i];
mindiff = diff;
}
}
return value;
}
};
06-20
06-20
11-16
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交