- 博客(9)
- 收藏
- 关注
原创 树的广度优先遍历
广度优先只要找到当前深度的所有节点并访问就行:public static void getValueG(TreeNode node, Listint> outArr)//广度优先 { QueueTreeNode> queue = new QueueTreeNode>(); TreeNode p = node; if (node
2017-06-05 17:36:03
252
原创 树的后序遍历
遍历:循环所有元素访问:访问一个实例null!=0,一个实例为null,说明这个实例没有任何引用,而不是为0;树的后序遍历:顺序:左子树=>右子树=>根非递归方法:通过栈来实现先序遍历的顺序对于任一结点P,将其入栈,然后沿其左子树一直往下搜索,一直找到没有左子树的时候,上一个入栈的节点是该节点的父节点,需要一个变量来记录这个节点的出现次数,而此时该结
2017-06-05 17:34:52
1480
原创 树的中序遍历
对于任一结点P,1.若其左孩子不为空,则将P入栈并将P的左孩子置为当前的P,然后对当前结点P再进行相同的处理;2.若其左孩子为空,则取栈顶元素并进行出栈操作,访问该栈顶结点,然后将当前的P置为栈顶结点的右孩子;3.直到P为NULL并且栈为空则遍历结束非递归方法:public static void getValueTWithLoop(TreeNode node,
2017-06-05 17:33:17
407
原创 树的先序遍历
先序遍历顺序:根=>左=>右对于任一结点P:1.访问结点P,并将结点P入栈;2.判断结点P的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前的结点P,循环至1);若不为空,则将P的左孩子置为当前的结点P;3.直到P为NULL并且栈为空,则遍历结束所以:(1)先将根节点入栈,并访问(2)判断是否有左子树,
2017-06-05 17:32:26
1151
原创 67. Add Binary
题意:就是把两个string的二进制数相加难点:记得进位和按位相加就好解法:int len1 = a.Length - 1;//数组1的长度 int len2 = b.Length - 1;//确定数组2的长度 int carry = 0;//进位数 char[] nums1 = a.ToCharArray(
2017-06-01 19:35:10
156
原创 判断一个整数的二进制数里有几个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
1739
原创 逻辑运算
非运算: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
177
原创 for,while循环,if判断格式
for(表达式;条件;循环式)可省略为for(;;){中间循环程序;}第一个是for循环起始执行的代码段,第二个是for循环判断的条件,第三段是每次循环完一次之后执行的代码段while(循环条件){循环程序;跳出代码;}if(表达式/条件)//如果程序满足if条件,执行if,不满足则执行else{循环程序}else(表达式)
2017-06-01 19:22:53
558
原创 关于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
6404
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人