【二叉树的三种遍历(递归,迭代)】教程文章相关的互联网学习教程文章

数据结构与算法-第12章二叉树和其他树-002克隆二叉树【代码】

例子中二叉树用链表示1.后序遍历克隆和前序遍历克隆 1package chapter12Tree;2 3//In writing the cloning codes, we assume that we are not to 4//make clones of the elements in the nodes. Only the tree structure is to be cloned. 5//In case the elements are also to be cloned, then we must replace all occurrences 6//of element by code to first cast element into a CloneableObject, 7//and then invoke the met...

【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java【代码】

【LeetCode】Minimum Depth of Binary TreeGiven a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.递归和非递归,此提比较简单。广度优先遍历即可。关键之处就在于如何保持访问深度。下面是4种代码: 1import java.util.ArrayList;2import java.util.LinkedList;3import java.util.List;4import java.util.Queue;5 ...

C++ 判断对称二叉树的递归和非递归做法 [LeetCode 101]【代码】

题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/22/ \ /3443 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/22\ 33链接:https://leetcode-cn.com/problems/symmetric-tree最开始的思路是用层次遍历,每一行看看是不是回文数组,但后来发现例如样例2那样的树就会判断错误,递归也没想好怎么个调用思路。 正确的递归思路:来源:https://leetcode-cn.com/u/haventmetyo...

树、递归————翻转二叉树【代码】【图】

其实就是后序遍历 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*/10class Solution { 11public: 12 TreeNode* invertTree(TreeNode* root) { 13//相当于后序遍历14if(!root) return root; 15 swap(root->left,root->right); 16 invertTree(root->l...

二叉树 —— 创建 + 先序、中序、后序遍历(递归+非递归)【代码】【图】

创建如下二叉树:代码如下#coding:utf-8class Node(object):‘‘‘构造节点‘‘‘def__init__(self,data=None,lchild=None,rchild=None):self.data = dataself.lchild = lchildself.rchild = rchildclass Tree(object):def__init__(self):self.root = Node()def addNode(self,data):‘‘‘利用队列构造树‘‘‘node = Node(data)if self.root.data == None:self.root = nodeelse:myqueue = []treeNode = self.rootmyqueue.append...

剑指 Offer 32 - III. 从上到下打印二叉树 III【代码】

思路一:加了一句:if(res.size() % 2 == 1) Collections.reverse(tmp);如果res.size()为奇数,当前层为偶数,反转tmp之后再存入res。class Solution {public List<List<Integer>> levelOrder(TreeNode root) {if(root == null) returnnew LinkedList<>();List<List<Integer>> res = new ArrayList<>();Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while(!queue.isEmpty()){List<Integer> tmp = new ArrayList<...

从上往下打印二叉树【图】

题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图中的二叉树,则依次打印出8、6、10、5、7、9、11。二叉树结点定义如下:struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight; };思路:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所...

DS树--二叉树之最大路径【代码】

题目描述给定一颗二叉树的逻辑结构(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构二叉树的每个结点都有一个权值,从根结点到每个叶子结点将形成一条路径,每条路径的权值等于路径上所有结点的权值和。编程求出二叉树的最大路径权值。如下图所示,共有4个叶子即有4条路径,路径1权值=5 + 4 + 11 + 7 = 27 路径2权值=5 + 4 + 11 + 2 = 22路径3权值=5 + 8 + 13 = 26 ...

剑指offer(三十三)之重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码:<span style="font-size:18px;">/*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ pub...

java平衡二叉树AVL数【代码】

平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树 右旋:在插入二叉树的时候,根节点的右侧高度大于左侧高度,且绝对值超过了2,并且在root.左侧的值大于插入的值时发生右旋 。  左右旋:在插入二叉树的时候,根节点的右侧高度大于左侧高度,且绝对值超过了2,并且在root.左侧的值小于插入的值时发生,先对root的左子树发生左旋...

创建二叉树、创建链表等【代码】【图】

方法一: 1 #include <iostream>//创建二叉树,要用二级指针2 3usingnamespace std;4 5 typedef struct TreeNode6{7char data;8struct TreeNode *left;9struct TreeNode *right; 10}BiTree; 1112void creatBitree(BiTree **T) 13{ 14char ch; 15 cin >> ch; 16if (ch == ‘#‘) 17 { 18 *T = NULL; 19 } 20else21 { 22 *T = (BiTree*)malloc(sizeof(TreeNode)); 23 (*T)->data = ch; 24 ...

通过先序遍历和中序遍历后的序列还原二叉树【代码】【图】

当我们有一个先序遍历序列:1,3,7,9,5,11中序遍历序列:9,7,3,1,5,11我们可以很轻松的用笔写出对应的二叉树。但是用代码又该如何实现?下面我们来简单谈谈基本思想。首先,先序遍历的顺序是根据 根-左孩子-右孩子 的顺序遍历的,那么我们可以率先确认的是先序遍历序列的第一个数就是根节点,然后中序遍历是根据 左孩子-根-右孩子 的顺序遍历的。我们通过先序遍历确认了根节点,那么我们只需要在中序遍历中找到根节点的位置,然后就...

JavaScript 种一颗二叉树【代码】【图】

/* 实现一颗树结点类:Tree包含左子树left,右子树right,根节点root,缺省为null构造设置value树类:Trees构造:默认根节点为nullinsert:如果当前根节点不存在,则将传进来的节点存为根节点如果当前根节点存在,执行InsertTreeinsertTree(rootNode,newTree):1 如果新树value小于根节点value,放到根节点的左边,如果根节点左子树已经存在,以根节点左子树为根节点继续递归2 如果新树value大于等于根节点value,放到根节点右边,如果根节点右子...

二叉树前中后递归遍历【代码】

1publicclass Node { 2publicint value; 3public Node left; 4public Node right; 56public Node (int data){ 7this.value = data; 8 } 9 } 1publicclass BinaryTreeMethod {2 3/** 4 * 二叉树递归前序遍历5 * @param head6*/ 7publicvoid preOrderRecur(Node head){8if(head == null){9return; 10 } 11 System.out.print(head.value + " "); 12 preOrderRecur(head.left); 13 preOrderRe...

剑指 Offer 68 - II. 二叉树的最近公共祖先【代码】【图】

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == null || root == p || root == q) return root;TreeNode left = lowestCommonAncestor(root.left, p, q);TreeNode right = lowestCommonAncestor(root.right, p, q);if(left == null) return right;if(right == null) return left;return root;} 原文:https://www.cnblogs.com/taoyuxin/p/13544787.html