fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct TreeNode{
  5. int data;
  6. TreeNode* left;
  7. TreeNode* right;
  8. TreeNode(int data):left(nullptr),right(nullptr),data(data){};
  9. };
  10. TreeNode* buildTree(vector<int>&arr){
  11. if(arr[0]==-1)return nullptr;
  12. stack<pair<TreeNode*,int>>st;
  13.  
  14. TreeNode* root = new TreeNode(arr[0]);st.push({root,0});
  15. for(int i = 1;i<arr.size();i++){
  16. auto &top = st.top();
  17. if(arr[i]==-1){
  18. if(top.second == 0){
  19. top.second++;
  20. }else{
  21. st.pop();
  22. }
  23. }else{
  24. TreeNode* newNode = new TreeNode(arr[i]);
  25. if(top.second == 0){
  26. top.first->left = newNode;
  27. top.second++;
  28. }else{
  29. top.first->right = newNode;
  30. st.pop();
  31.  
  32. }
  33. st.push({newNode,0});
  34. }
  35. }
  36. return root;
  37.  
  38. }
  39. int size(TreeNode* root){
  40. if(!root)return 0;
  41. return 1+size(root->left)+size(root->right);
  42.  
  43.  
  44. }
  45. int sum(TreeNode* root){
  46. if(!root)return 0;
  47. int sm = root->data;
  48. return sm+sum(root->left)+sum(root->right);
  49. }
  50. int height(TreeNode* root){
  51. if(!root)return 0;
  52.  
  53. return 1+max(height(root->left),height(root->right));
  54. }
  55. int maxDepth(TreeNode* root){
  56. if(!root)return 0;
  57. int dpth = 0;
  58. dpth = max(dpth,maxDepth(root->left));
  59. dpth = max(dpth,maxDepth(root->right));
  60. return dpth+1;
  61. }
  62. int maxi(TreeNode* root){
  63. if(!root)return 0;
  64. int mx = root->data;
  65. return max({mx,maxi(root->right),maxi(root->left)});
  66. }
  67. void displayTree(TreeNode* root){
  68. if(root == nullptr)return;
  69. if(root)cout<<root->data<<"->";
  70. if(root->left)cout<<root->left->data<<",";
  71. if(root->right)cout<<root->right->data<<",";
  72. cout<<endl;
  73. displayTree(root->left);
  74. displayTree(root->right);
  75. }
  76. int main() {
  77. vector<int>arr = {10,30,40,-1,-1,60,-1,-1,50,70,-1,-1,-1};
  78. TreeNode* root = buildTree(arr);
  79. // displayTree(root);
  80. cout<<"szie"<<size(root)<<endl;
  81. cout<<"sum"<<sum(root)<<endl;
  82. cout<<"height"<<height(root)<<endl;
  83. cout<<"maxDepth"<<maxDepth(root)<<endl;
  84. cout<<"maxi"<<maxi(root)<<endl;
  85. return 0;
  86. }
Success #stdin #stdout 0s 5348KB
stdin
Standard input is empty
stdout
szie6
sum260
height3
maxDepth3
maxi70