树
树
I am jack
go ahead
展开
-
LeetCode114.二叉树展开为链表
一.递归class Solution {public: TreeNode* inOrder(TreeNode* root){ if(root==NULL) return NULL; else{ TreeNode* left = inOrder(root->left); TreeNode* right = inOrder(root->right); root->left = .原创 2021-03-18 11:15:25 · 77 阅读 · 0 评论 -
根据二叉树栈形式的中序遍历过程来反推二叉树
6Push 1Push 2Push 3PopPopPush 4PopPopPush 5Push 6PopPopint main(){ scanf("%d",&n); memset(l,-1,sizeof l);memset(r,-1,sizeof r); cin>>last;cin>>id; root = id; p[top++] = root; for(int i=1;i<=2*n-1;i++原创 2021-03-10 10:59:51 · 223 阅读 · 0 评论 -
普通树转二叉树
普通树转二叉树转载 2020-06-06 22:17:20 · 134 阅读 · 0 评论 -
哈夫曼树
哈夫曼树(最优二叉树)视频教程哈夫曼编码是现代压缩算法的基础,是一种前缀码,即任意一个字符的二进制编码都不是其他字符的前缀一.算法步骤与特点总结①以权值作为根节点构建n棵二叉树,组成森林②在森林中选出根据节点最小的两棵树合并作为一个新树的左右子树,新树的根节点为其左右子树的根节点之和③从森林中删除刚才选取的两棵树并将新树加入森林④重复上述步骤直到只剩下一棵树,该树便是哈夫曼树(最优二叉树)带权路径长度即WPL二.代码实现第一步:定义节点//定义节点class Node{原创 2020-05-12 17:08:05 · 346 阅读 · 0 评论 -
Morris算法中序遍历二叉树
Morris算法中序遍历二叉树1.树节点的定义class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }2.Morris算法步骤:(该算法的核心就是其前序连接)①若当前节点左子树为空(左子树为空那么其没有前序节点),那么打...原创 2020-04-02 16:09:58 · 193 阅读 · 0 评论 -
利用中序与后序遍历结果创建树
利用中序与后序遍历结果创建树class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } //利用中序与后序遍历结果创建树public class Test{ int[] inorder; int[] postor...原创 2020-03-21 14:16:05 · 195 阅读 · 0 评论 -
双栈后序遍历树
双栈后序遍历树class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } //双栈后序遍历树public class Test{ Stack<TreeNode> stack1 = new Stack<TreeN...原创 2020-03-21 13:45:15 · 386 阅读 · 0 评论 -
利用先序和中序遍历结果构造二叉树
利用先序和中序遍历结果构造二叉树//定义树节点类class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }public class Test{ int pre_idx=0;//指定前序数组目前访问的节点 int[]...原创 2020-03-21 12:58:57 · 325 阅读 · 0 评论 -
二叉树的非递归前序,中序,后序遍历实现(java,全部用栈)
二叉树的非递归(全部用栈解决)前序,中序,后序遍历实现先上代码再解释(注意我为什么把中序放在最前面,因为我的后面两个都是基于中序来的,所以先把中序搞懂了,其他的就简单了)1.中序class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } ...原创 2020-03-18 21:56:27 · 999 阅读 · 0 评论