编程心得
小小神灵
这个作者很懒,什么都没留下…
展开
-
树的先序遍历
先序遍历顺序:根=>左=>右 对于任一结点P: 1.访问结点P,并将结点P入栈; 2.判断结点P的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前的结点P,循环至1);若不为空,则将P的左孩子置为当前的结点P; 3.直到P为NULL并且栈为空,则遍历结束 所以: (1)先将根节点入栈,并访问 (2)判断是否有左子树,原创 2017-06-05 17:32:26 · 1108 阅读 · 0 评论 -
树的中序遍历
对于任一结点P, 1.若其左孩子不为空,则将P入栈并将P的左孩子置为当前的P,然后对当前结点P再进行相同的处理; 2.若其左孩子为空,则取栈顶元素并进行出栈操作,访问该栈顶结点,然后将当前的P置为栈顶结点的右孩子; 3.直到P为NULL并且栈为空则遍历结束 非递归方法: public static void getValueTWithLoop(TreeNode node,原创 2017-06-05 17:33:17 · 372 阅读 · 0 评论 -
树的后序遍历
遍历:循环所有元素 访问:访问一个实例 null!=0,一个实例为null,说明这个实例没有任何引用,而不是为0; 树的后序遍历: 顺序:左子树=>右子树=>根 非递归方法:通过栈来实现先序遍历的顺序 对于任一结点P,将其入栈,然后沿其左子树一直往下搜索,一直找到没有左子树的时候,上一个入栈的节点是该节点的父节点,需要一个变量来记录这个节点的出现次数,而此时该结原创 2017-06-05 17:34:52 · 1407 阅读 · 0 评论 -
树的广度优先遍历
广度优先只要找到当前深度的所有节点并访问就行: public static void getValueG(TreeNode node, Listint> outArr)//广度优先 { QueueTreeNode> queue = new QueueTreeNode>(); TreeNode p = node; if (node原创 2017-06-05 17:36:03 · 235 阅读 · 0 评论 -
关于char直接取数字
char里面实际上是“ASCLL码+‘数字字符’” 内容为数字的char,包含0,1,2,3,4,5,6,7,8,9共计10个字符。 这十个字符在存为字符型时,其存储值为对应的ASCLL码,而这些ASCLL码是连续的,而且按照其本身数字的大小来排列。 这样就可以通过“ 字符值-起始ascii码值” 实现转为对应值的效果。 例子: int a; char numbe=‘7’; nu原创 2017-06-01 19:21:12 · 6349 阅读 · 0 评论 -
for,while循环,if判断格式
for(表达式;条件;循环式)可省略为for(;;) { 中间循环程序; } 第一个是for循环起始执行的代码段,第二个是for循环判断的条件,第三段是每次循环完一次之后执行的代码段 while(循环条件) { 循环程序; 跳出代码; } if(表达式/条件)//如果程序满足if条件,执行if,不满足则执行else { 循环程序 } else(表达式)原创 2017-06-01 19:22:53 · 528 阅读 · 0 评论 -
逻辑运算
非运算: 1=!0; 或运算: 1||1=1; 1||0=1; 0||1=1; 0||0=0; 与运算: 1&1=1; 1&0=0; 0&1=0; 0&0=0; 异或运算: 0 ^ 0=0; 1 ^ 0=1; 0 ^ 1=1; 1 ^ 1=0; z=x^y表示x和y按位异或得z;&&和||比&和|高效原创 2017-06-01 19:24:15 · 157 阅读 · 0 评论 -
判断一个整数的二进制数里有几个1
思路: 先把整数(十进制)转为二进制来处理吧,比如n=10,二进制为1010 方法1:最简单的当然是转成二进制后一位一位的比较。 int count = 0; string a=Convert.ToString(n, 2);//C#的进制转化 a.ToCharArray(); for (int i=0;ia.Length;i++) { if (a[i]=='1') { co原创 2017-06-01 19:28:03 · 1705 阅读 · 0 评论