NOJ1018-深度遍历二叉树】的更多相关文章

递归代码:递归实现很简单 '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None '列表创建二叉树' def listcreattree(root,llist,i):###用列表递归创建二叉树, #它其实创建过程也是从根开始a开始,创左子树b,再创b的左子树,如果b的左子树为空,返回none. #再接着创建b的右子树, if i<len(llist): if l…
void PrintNodeAtLevel(BiTree T,int level) { // 空树或层级不合理 ) return; == level) { cout << T->data << " "; return; } // 左子树的 level - 1 级 PrintNodeAtLevel(T->leftChild, level - ); // 右子树的 level - 1 级 PrintNodeAtLevel(T->rightChild…
节点数据结构 class TreeNode { TreeNode left = null; TreeNode right = null; } 最大深度,基本思路是:使用递归,分别求出左子树的深度.右子树的深度,两个深度的较大值+1就是最大深度. // 获取最大深度 public static int getMaxDepth(TreeNode treeNode) { if (treeNode == null) return 0; else { int left = getMaxDepth(tree…
原文链接:https://www.dreamwings.cn/ytu2345/2611.html 2345: 后序遍历二叉树 时间限制: 1 Sec  内存限制: 128 MB 提交: 3  解决: 3 题目描述 给定一颗二叉树,要求输出二叉树的深度以及后序遍历二叉树得到的序列.本题假设二叉树的结点数不超过1000 输入 输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树.每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处理.…
原文链接:https://www.dreamwings.cn/ytu2346/2606.html 2346: 中序遍历二叉树 时间限制: 1 Sec  内存限制: 128 MB 提交: 12  解决: 3 题目描述 给定一颗二叉树,要求输出二叉树的深度以及中序遍历二叉树得到的序列.本题假设二叉树的结点数不超过1000. 输入 输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树.每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处…
原文链接:https://www.dreamwings.cn/ytu2344/2603.html 2344: 先序遍历二叉树 时间限制: 1 Sec  内存限制: 128 MB 提交: 4  解决: 3 题目描述 给定一颗二叉树,要求输出二叉树的深度以及先序遍历二叉树得到的序列.本题假设二叉树的结点数不超过1000. 输入 输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树.每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处理…
将内容过程中经常用的内容做个记录,如下内容内容是关于Java递归方法遍历二叉树的内容. package com.wzs; public class TestBinaryTree { public static void main(String[] args) { Node<String> g = new Node<String>("G", null, null); Node<String> e = new Node<String>(&qu…
平衡的二叉树的定义都是递归的定义,所以,用递归来解决问题,还是挺容易的额. 本质上是递归的遍历二叉树. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,判定他是不是高度平衡的二叉树. 对于这个问题,每个节点的两个子树的深度不会相差超过1,那么这样的二叉树就是一个平衡的二叉树 +++++++++++++++++++++++++++++++++++++++++++++…
一.二叉树的深度 题目: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 . 思路1:递归 边界:一旦root == None则返回深度为0.否则进入递归子问题. 递归子问题:max(左树深度,右树深度)+ 1 def dfs(root): #边界 if not root: retu…
前序遍历:1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历:1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历:1.后序遍历左子树 2.后序遍历右子树 3.访问根节点--------------------- package design; import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; public class BinTree { char data; Bin…
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { protected SeqList<E> vertexlist; // 顺序表存储图的顶点集合 protected int[][] adjmatrix; // 图的邻接矩阵 二维图 存储的是每个顶点的名称(A,B,C,D....) ; // private final int MAX_WEIGHT = …
一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈及相关操作是第三章实现的,但数据类型做了更改. 二.头文件 //3_1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-7 note:realize my textbook <<数据结构(C语言版)>> */…
一个简单的创建和遍历二叉树的C++程序,二叉树的其他操作程序待更新. #include <iostream> using namespace std; struct BiTNode{ char data; struct BiTNode *lchild, *rchild;//左右孩子 }; BiTNode*T; void CreateBiTree(BiTNode* &T); void Inorder(BiTNode* &T); void PreOrderTraverse(BiTN…
代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir = new File("E:"+File.separator+"demodir…
java遍历树如现有以下一颗树:A     B          B1               B11          B2               B22     C          C1               C11               C12          C2     D          D1               D11 第一种方式深度优先遍历 (最终返回的一棵压扁的树,依次从上往下)使用Stack,由于stack是先进后出,故实现方式为:首先pu…
Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree [1,null,2,3], 1 \ 2 / 3 return [1,3,2]. Note: Recursive(递归) solution is trivial, could you do it iteratively(迭代)? 思路: 解法一:用递归方法很简单, (1)如果root为空,则返回…
参照和学习: https://www.cnblogs.com/AnnieKim/archive/2013/06/15/morristraversal.html 解决的问题:如何使用空间复杂度O(1),来遍历二叉树. 我们通常的办法:是递归或者利用栈的迭代,空间复杂度都为O(logN),虽然已经很完美,但是还有更加美丽和充满艺术感的Morris. Morris解法:首先要面临的问题是,O(1)的空间,遍历的时候怎么回去(常规方法,是利用栈,和递归存储先前信息的能力),我们所知道的二叉树的叶节点,都…
遍历二叉树   traversing binary tree 线索二叉树 threaded binary tree 线索链表 线索化 1. 二叉树3个基本单元组成:根节点.左子树.右子树 以L.D.R分别表示遍历左子树.访问根节点.遍历右子树 可能的情况6种 排列A3 2 LDR LRD DLR DRL RLD RDL 若限定先左后右 LDR LRD  中根序遍历  后根序遍历 DLR  先根序遍历 先/中/后 序遍历…
遍历二叉树,这个相对比较复杂. 二叉树的便利,主要有两种,一种是广度优先遍历,一种是深度优先遍历. 什么是广度优先遍历?就是根节点进入,水平一行一行的便利. 什么是深度优先遍历呢?就是根节点进入,然后按照一个固定的规律,一直向下走,一个方向的子树遍历之后再遍历另一个方向的子树. 深度优先遍历,主要有三种顺序遍历:先序(先输出根节点),中序(第二个输出根节点),后序(最后输出根节点). 直接上代码吧. class Node { public $data = null; public $left =…
binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> #include<c++/cstdio> #include<string> #include<c++/string> #include<c++/vector> #include<vector> #include<iostream> #i…
连通图的遍历(深度遍历/广度遍历) 概念:图中的所有节点都要遍历到,并且只能遍历一次. 深度遍历 广度遍历 深度遍历 概念:从一个给定的顶点开始,找到一条边,沿着这条边一直遍历. 广度遍历 概念:从一个给定的顶点开始,找到这个顶点下的所有子顶点后,再找下一层的子顶点. 深度遍历的实现思路 1,创建一个bool数组,用来识别哪个顶点已经被遍历过了. 2,递归 3,递归找给定顶点是否有下一个顶点(方法:get_first_neighbor),都找完后, 4,再递归找给定顶点之后的在3处找到的顶点后的…
遍历指定目录下的所有文件和文件夹 import java.io.File; public class FileTest { public static void main(String[] args) { File dir1 = new File("F:\\韩顺平");//如果该指定的目录不存在会发生NullPointerException List(dir1); } public static void List(File dir1) { String[] file = dir1.l…
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private BinTree lchild; private BinTree rchild; public BinTree(char c) { date = c; } // 先序遍历递归 public static void preOrder(BinTree t) {…
二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree). class Node { public $value; public $left; public $right; } //前序遍历 根节点 ---> 左子树 ---> 右子树 function preorder($root) { if (empty($root)) { return; } echo $root->value . ' ';//输出根节点…
二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree). <?php class Node { public $value; public $left; public $right; } //先序遍历 根节点 ---> 左子树 ---> 右子树 function preorder($root) { //P($root); $stack = array(); array_push($stack, $root);…
Python3 解析XML 层序遍历二叉树 keyword : python3, xml, xml.dom.minidom, 层序遍历, 层次遍历, 二叉树 part1 问题描述 面对如下 XML 文件,写程序按层序遍历二叉树,要求打印 text 节点中的 text 属性,并按文法的形式展示. 1.1 二叉树举例如下图 1.2 对应的文法规则如下所示 Root ->Dir +AbMissHigh Dir ->截至 AbMissHigh ->AbMissHigh +PartOf AbMis…
2018-10-03 20:16:53 非递归遍历二叉树是使用堆栈来进行保存,个人推荐使用双while结构,完全按照遍历顺序来进行堆栈的操作,当然在前序和后序的遍历过程中还有其他的压栈流程. 一.Binary Tree Preorder Traversal 问题描述: 问题求解: 先序遍历就是在第一次访问到节点的时候将其值进行打印,然后递归打印其左子树,最后递归打印其右子树. 解法一.双while public List<Integer> preorderTraversal(TreeNode…
需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File("E:\\Test\\aa"); // exists 判断文件或目录是否存在:存在为true if(!parent.exists()){ // mkdirs 创建多级目录 parent.mkdirs(); } import java.io.File; public class Test {…
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码: package binarytree; import linkedstack.LinkStack; import linkqueue.LinkQueue; public class BinaryTree { class Node { public Object data; public Node…