关于二叉树的一点随笔
自己之前学过关于二叉树的一些东西,但是时间有点久自己已经忘完了,最近在刷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 };
同时自己也去回看了之前的遍历一颗二叉树的算法——利用递归的方法(前序,中序,后续)对一棵树实现遍历,加深了对算法进行变体的应用理解。

浙公网安备 33010602011771号