关于二叉树的一点随笔

自己之前学过关于二叉树的一些东西,但是时间有点久自己已经忘完了,最近在刷leetcode上的题目的时候感觉已经忘完了,回头又看了一边简单的写一点自己的笔记吧

常见的二叉树类型有:

  • 斜树:在一个二叉树中仅有左数或者仅有右树的情况为斜树
  • 满二叉树:在一棵二叉树中所有的节点都具有左子树和右子树,且所有的叶节点都位于同一层上
  • 完全二叉树:按照从左到右,从上到下的的方法对一个二叉树编号,没有出现数字中断的情形

 

 

 今天在书体中,遇到了一个新的概念叫做二叉搜索树:

 

  二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)

 

  它或者是一棵空树,或者是具有下列性质的二叉树: 

 

    1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 

 

    2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 

 

    3. 它的左、右子树也分别为二叉排序树

题目如图所示

 

 自己参考大佬的博客得到了启发写出的解答,利用中序遍历发,然后使用逆中序遍历就可以实现对问题的求解

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11     int num = 0;
12 public:
13     TreeNode* convertBST(TreeNode* root) {
14             if(root == NULL)
15                 return NULL;
16             convertBST(root->right);
17             root->val = root->val+num;
18             num = root->val;
19             convertBST(root->left);
20             return root;   
21 
22     }
23 };

同时自己也去回看了之前的遍历一颗二叉树的算法——利用递归的方法(前序,中序,后续)对一棵树实现遍历,加深了对算法进行变体的应用理解。

 

 

 

posted @ 2020-09-21 20:06  好学的同学  阅读(218)  评论(0)    收藏  举报